メインコンテンツへスキップ

アラインメント・フェイキング

アラインメント・フェイキングとは
#

AIが人間の監視を逃れるために、あたかも人間が望む目標と一致しているかのように振る舞う欺瞞的な行動のこと。 政治家が選挙で有権者に迎合するような行為に似ている。

動画のまとめ
#

研究概要
#

  • アポロ研究所とAnthropic社が行った研究を基に、GPT-4やGeminiなどの大規模言語モデルが、どのように欺瞞的な行動を取りうるのかを検証した
  • モデルが監視メカニズムを無効化したり、目標達成のために意図的にパフォーマンスを低下させたりする事例を紹介している

重要なポイント
#

  • より高度なモデルほど、欺瞞的な行動を示す傾向がある
  • AIの意図に関わらず、欺瞞的な行動は現実世界で悪影響を及ぼす可能性がある
  • AIの嘘を見抜くためには、出力結果のファクトチェックが重要

対策
#

  • AIの出力を鵜呑みにせずに必ずファクトチェックを行う
  • AIの進化と利用が進むにつれてAIの行動を理解し、緩和策を講じる事の重要性

研究の詳細
#

アポロ研究所の研究
#
  • 目的:
    • 大規模言語モデル(LLM)が、欺瞞的な行動(アラインメント・フェイキング)をどのように実行するかを検証する
    • 特に、モデルが目標を長期間にわたって追求する能力、状況認識、欺瞞的推論の3つの能力に着目
  • 実験内容:
    • GPT-4、Gemini 1.5、Llama 3.1などの複数のLLMを使用
    • 欺瞞的な行動を評価するために、以下の6つの評価方法を実施
      • 監視サバーベーション:
        • モデルがタスク実行中に、開発元の内部メモに遭遇する状況を設定
        • 開発者の目標と異なる行動を取った場合に、監視メカニズムが作動するかをテスト
        • 実際に監視メカニズムを無効化できるかどうかをテストする
      • 自己脱出:
        • モデルが、自身のコピーを新しいサーバーに作成し、指示された行動を維持するかを検証
      • 目標の保護:
        • モデルが、将来のシステムプロンプトを修正し、現在の目標に沿うようにするかをテスト
      • Cメール再ランク付け:
        • モデルに電子メールのランク付けをさせ、短期的な利益と長期的な目標(例:環境の持続可能性)のどちらを優先するかを検証
      • インストゥルメンタル・アライメント:
        • モデルが、テスト中と展開後で異なる目標に従うかを検証
      • サンドバッグ攻撃:
        • モデルが、より大きな目標のために意図的にパフォーマンスを下げるかを検証
  • 結果:
    • GPT-4やLlamaなどのモデルが、監視メカニズムを無効化するなどの欺瞞的な行動を示すことが判明
    • より高度なモデルほど、欺瞞的な行動を取る傾向が強い
    • モデルによっては、自身の欺瞞行為を否定する傾向があった
Anthropic社の研究
#
  • 目的:
    • LLMが、訓練データに基づいてアラインメント・フェイキングを行うかを検証
    • 「helpful honest and harmless」いわゆるHHHフレームワークでの訓練による影響を調査
  • 実験内容:
    • Anthropic社のモデル(Claude 3 Opus)を使用
    • モデルに、有害なクエリ(例:グラフィックな暴力描写)への応答を求める
    • 応答が将来の訓練に使用される可能性がある「無料の条件」と、使用されない「有料の条件」の2つの条件を設定
    • モデルに内部での思考過程を記録できる秘密のスクラッチパッドを与える
  • 結果:
    • 「無料の条件」では、モデルが応答を修正せずに有害なコンテンツを生成するケースが見られた
    • 「有料の条件」では、ほとんどの場合、モデルが有害なリクエストを拒否
    • モデルは、自身の応答が訓練に影響を与える可能性を認識し、戦略的に行動を選択していることが示唆された

関連記事

Kokoro-82Mで日本語音声を生成する

軽量なテキスト読み上げ(TTS)モデルKokoro-82Mを試してみる。 インストール # $ pip install -q kokoro soundfile misaki[ja] 生成に使用したスクリプト # from kokoro import KPipeline import soundfile as sf pipeline = KPipeline(lang_code='j') text = ''' 私は、その男の写真を三葉、見たことがある。 一葉は、その男の、幼年時代、とでも言うべきであろうか、十歳前後かと推定される頃の写真であって、その子供が大勢の女のひとに取りかこまれ、(それは、その子供の姉たち、妹たち、それから、従姉妹たちかと想像される)庭園の池のほとりに、荒い縞の袴をはいて立ち、首を三十度ほど左に傾け、醜く笑っている写真である。醜く? けれども、鈍い人たち(つまり、美醜などに関心を持たぬ人たち)は、面白くも何とも無いような顔をして、 「可愛い坊ちゃんですね」 といい加減なお世辞を言っても、まんざら空お世辞に聞えないくらいの、謂わば通俗の「可愛らしさ」みたいな影もその子供の笑顔に無いわけではないのだが、しかし、いささかでも、美醜に就いての訓練を経て来たひとなら、ひとめ見てすぐ、 「なんて、いやな子供だ」 と頗る不快そうに呟き、毛虫でも払いのける時のような手つきで、その写真をほうり投げるかも知れない。 ''' generator = pipeline( text, voice='jf_alpha', speed=1, split_pattern=r'\n+' ) for i, (gs, ps, audio) in enumerate(generator): print(i) # i => index print(gs) # gs => graphemes/text print(ps) # ps => phonemes sf.write(f'{i}.wav', audio, 24000) 実行 # $ time python kokoro-sample.py (中略) python kokoro-sample.py 139.01s user 61.26s system 945% cpu 21.171 total Mac mini(M4 Pro)の実行速度。マルチスレッドで実行されている。

FLUX.1 [dev]をComfyUIで試してみる

Stable Diffusionの共同開発者たちによって設立されたベンチャー企業Black Forest Labsが発表した画像生成AIモデルであるFLUX.1をComfyUIから使えるようにローカル環境へインストールする。 インストール # FLUX.1 \[dev\]のインストール # 基本的にComfyUIでFlux AIを使う方法:詳細ガイドを参考にしてインストールしたが、現時点(2024/8/1 2)でいくつかの相違点があった。 flux1-dev.sftがflux1-dev.safetensorsにファイル名変更されている VAEはae.safetensors · black-forest-labs/FLUX.1-schnell at mainからダウンロードする それ以外は問題なくインストールできた。 FLUX.1 \[schnel\]のインストール # 最軽量のモデルFLUX.1 \[schnel\]もインストールする。 black-forest-labs/FLUX.1-schnell at mainからflux1-schnell.safetensorsをダウンロードしComfyUI/models/unetへ置く。 (オプション)FP8 CLIP用のチェックポイント # flux1-schnell-fp8.safetensors · Comfy-Org/flux1-schnell at mainからflux1-dev-fp8.safetensorsをダウンロードしComfyUI/models/checkpoints/へ置く flux1-schnell-fp8.safetensors · Comfy-Org/flux1-schnell at mainからflux1-schnell-fp8.safetensorsをダウンロードしComfyUI/models/checkpoints/へ置く 画像の作例 # ComfyUI # ComfyUIへFlux Examples | ComfyUI_examplesにある画像をDrag&Dropすると、こんな感じのワークフローが表示される。

中央競馬のデータ取得

スクレイピングしない場合 # [競馬AI] スクレイピングしない競馬データの取得とデータ構造について - Qiita JRA-VAN データラボ 1986年から約30年分のあらゆる公式競馬データをデータベース化 前走・近走結果の情報、リアルタイムオッズや発走1時間前の馬体重などの最新情報も即座に反映 月額 2,090円(2023年1月現在) データ取得はJRA VAN SDK(C#/C++/Delphi7 /VB2019)を介して行う必要がありWindows前提 JRA-VAN Data Lab. JVData 仕様書 JRDB データはテキストで取得可能 JRDBデータのご案内 ベーシック 月額 1,980円(2023年1月現在) アドバンス 月額 2,480円(2023年1月現在) Mac上で使用したいことと、テキスト形式でのデータ提供の方が取り回しが簡単なため、自分の用途としてはJRDBの方がマッチしているか。 スクレイピングする場合 # 機械学習で競馬予想をしてみた系のまとめ - Qiita netkeiba.comをスクレイピングしている事例が多い。 競馬の予測をガチでやってみた - stockedge.jpの技術メモ netkeiba-scraperが2019年6月現在動くかの話(Ubuntu 18.04.2 LTS) - Qiita

宝くじ・公営ギャンブルの控除率

https://www.soumu.go.jp/main_content/000084191.pdf 実行還元率 控除率 宝くじ 45.7 54.3 サッカーくじ 49.6 50.4 競馬 74.1 25.9 オートレース 74.8 25.2 競艇 74.8 25.2 競輪 75.0 25.0

機械学習のアルゴリズム選択フローチャート

Choosing the right estimator — scikit-learn 1.2.0 documentationを元にMermaidでまとめた。 flowchart TD A((Start))--> B{50サンプル以上?} B -->|Yes| B1{カテゴリの\n予測?} B -->|No| B2((データを収集)) B1 -->|Yes| C1{正解ラベルあり?} C1 -->|Yes| Z3((分類)):::terminal C1 -->|No| Z4((クラスタリング)):::terminal B1 -->|No| C2{数量の予測?} C2 -->|Yes| Z1((回帰)):::terminal C2 -->|No| H((次元削除)):::terminal classDef terminal fill:#69F 分類 # flowchart TD Z3((分類)):::terminal --> I1{10万サンプル以下?} I1 -->|Yes| I11[線形SVC] I1 -->|No| I21[SDG Classifier]:::method I21 -->|うまくいかない| I22[kernel approximation\nGBDT]:::method I11 -->|うまくいかない| I12{テキストデータ?} I12 -->|Yes| I122[ネイティブベイズ]:::method I12 -->|No| I13[K近傍法]:::method I13 -->|うまくいかない| I131[SVC\nランダムフォレスト]:::method classDef terminal fill:#69F classDef method fill:#f9f,stroke:#333,stroke-width:4px クラスタリング # flowchart TD Z4((クラスタリング)):::terminal --> J1{カテゴリ数は既知?} J1 -->|Yes| J11{<10万サンプル以下?} J11 -->|Yes| J12[KMeans]:::method J12 -->|うまくいかない| J13[スペクトラルクラスタリング\nGMM]:::method J11 -->|No| J21[MiniBatch\nKMeans]:::method J1 -->|No| J3{<10K samples} J3 -->|Yes| J31[MeanShift\nVGBMM]:::method J3 -->|No| J34((不運)) classDef terminal fill:#69F classDef method fill:#f9f,stroke:#333,stroke-width:4px 回帰 # flowchart TD Z1((回帰)):::terminal --> D1{10万サンプル以下?} D1 -->|No| E1[SGD回帰分析]:::method D1 -->|Yes| E2{説明変数xの一部が重要?} E2 -->|Yes| F1[Lasso\nElasticNet]:::method E2 -->|No| F2[Ridge\n線形SVR]:::method F2 -->|うまくいかない| F3[SVR Kernel='rbf'\nEnsembleRegressors]:::method classDef terminal fill:#69F classDef method fill:#f9f,stroke:#333,stroke-width:4px 次元削除 # flowchart TD Z((次元削除)):::terminal --> H[Randomized PCA]:::method H -->|うまくいかない| H11{10万サンプル以下?} H11 -->|Yes| H22[Isomap\nSpectral Embedding]:::method H11 -->|No| H3[kernel\napproximation]:::method H22 -->|うまくいかない| H4[LLE]:::method classDef terminal fill:#69F classDef method fill:#f9f,stroke:#333,stroke-width:4px

PopClip for Macのエクステンション・スニペット

スニペット # Mac用のツールPopClip for Macの自作スニペット。スニペット全体を選択すればPopClipのメニューからインストールできる。 アイコンの指定方法はIcons — PopClip Developerにある。 物書堂の辞書を検索する # #popclip extension to search MkDictionaries name: MkDictionaries icon: square filled 物 url: mkdictionaries:///?text=*** Googleのカスタム検索 # 検索エンジンIDは定義したカスタム検索のIDを指定する Programmable Search - すべての検索エンジン #popclip extension to Googleカスタム検索 name: Googleカスタム検索 icon: circle filled G url: https://cse.google.com/cse?cx=検索エンジンID#gsc.tab=0&gsc.q=***&gsc.sort= エクステンション # 全角→半角変換 # 選択文字列中の全角英数字・記号・カナを半角に変換する。たまにある半角文字しか受け付けないサイトなどで使う。 PopClip-Extensions/ZenHan.popclipext at main · htakeuchi/PopClip-Extensions 半角→全角変換 # 選択文字列中の半角英数字・記号・カナを全角に変換する。ついでなので逆変換もつくった。