もちもちしている

おらんなの気まぐれブログ

なぜ詐欺を甘く見てはならないのか

はじめに

現在の日本では、詐欺はもはや一部の人だけが巻き込まれる特殊な事件ではありません。

2025年の警察庁のデータによると、特殊詐欺、SNS型投資詐欺、およびSNS型ロマンス詐欺を合わせた認知件数は43,000件、被害額は約3,257億円に達しています[1]。これは、詐欺が「高齢者が電話で騙される」という従来型の被害にとどまらず、SNS、ウェブ広告、DM、暗号資産、投資話などを入り口として、幅広い層へと広がっていることを示しています。

にもかかわらず、社会にはなお「あんな雑な話に騙されるはずがない」といった楽観的な雰囲気が残っています。この背景には、脅威の確率や影響を低く見積もる正常性バイアスや、自分は他人より被害に遭いにくいと考える楽観性バイアスが関わっています[2][3]。そして、この「自分だけは大丈夫」という感覚こそが、詐欺を甘く見る入り口となります。

詐欺を甘く見てしまう理由の一つは、詐欺被害を「相手の嘘を信じるか」、あるいは「相手の嘘を見抜けるか」という単純な2択問題として捉えてしまうことにあると考えます。 しかし、心理学と軍事学の観点から見ると、詐欺の本質は単なる嘘ではありません。それは、広く集められた「名目ターゲット」の中から、「実質ターゲット」を選別する過程にあります。詐欺における初期接触は、誰が次の段階に進むかを見極める心理的スクリーニングとして機能しているのです[4]。

本稿では、消費者庁の「特殊詐欺等の消費者被害における心理・行動特性」、米海兵隊の『MCTP 3-32F, Deception』、および社会心理学の代表的な研究を参考文献とし、詐欺を「巧妙な嘘」ではなく「選別の仕組み」として読み解いていきます[1][5][6][8][9][10]。 そのうえで、詐欺に強い人とは「相手の嘘をすべて見抜ける人」ではなく、「自分の判断を閉じ込めない人」である、ということを論じたいと思います。

「名目ターゲット」と「実質ターゲット」

詐欺の最初の接触は、不特定多数に向けて行われます。電話、メール、SNS、Web広告、偽サイトなどに触れた人は、広い意味では全員がターゲットと言えます。本稿では便宜上、彼らを「名目ターゲット」と呼びます。

仮にこの名目ターゲットが1万人いたとしても、詐欺師が1万人全員をまとめて犯罪に巻き込むことは不可能です。そこで彼らが行うのが「スクリーニング(ふるい分け)」です。名目ターゲットの中から、「詐欺のアプローチに反応し」「会話を継続し」「自分の欲や不安から勝手に辻褄を合わせて解釈し」「誰にも相談せず一人で判断してしまう人」だけを選別するのです。この選別された人々を「実質ターゲット」と呼びます。 (※これらは正式な専門用語ではありませんが、詐欺の構造を理解するために用います。また、実質ターゲットが必ずしも最終的な被害者になるわけではありません)

この区別を理解することがなぜ重要なのでしょうか。それは、詐欺の初期接触が必ずしも「全員を完璧に騙すためのもの」ではないからです。Herleyは、いわゆるナイジェリア詐欺について、攻撃者側にも「見込みのない相手を説得し続ける労力(コスト)」がかかるため、あえて不自然に見える怪しい文面を送ることで、それに反応してしまう相手を自己選別させていると論じています[4]。

SNSや動画投稿サイトではよく、「こんなめちゃくちゃな詐欺電話が来た!」と共有され、面白おかしい笑い話として消化されています。しかし、一見して荒唐無稽に思える話であっても、それを単なる「雑な詐欺」だと笑って済ませてよいとは限りません。その不自然さや雑さこそが、引っかかりやすい人をあぶり出す「ふるい分けの装置」として、意図的に設計されている可能性が高いからです。

詐欺に引っかかる分岐点

消費者庁から興味深い研究結果が出ています。

上野ほかは、消費者被害の被害届提出者と看破者を比較し、相手が名乗った身分、最初の接触方法、相手からの説明内容については、両者の間に統計的に有意な差が見られなかったと報告しています。一方で、被害届提出者では最初の接触に対してメールを送信する割合が多く、要求に応答した理由として「自分にとって利益があると思った」「後に返金されるという言葉を信用した」が多かったのです[5]。

この結果は実に示唆的です。被害と看破を分けたのは、必ずしも「どんな連絡が来たか」ではなかったのです。むしろ重要だったのは、接触後にどのように反応したか、です。

つまり、詐欺の危険は、入口となる連絡ではありません。連絡を受けた人が、返信する、折り返す、相手の説明を自分に関係あるものとして受け取る、第三者確認を後回しにする。このような反応の積み重ねによって、名目ターゲットは実質ターゲットへと移行していくのです。

同研究では、看破者が詐欺を見破った人物について、「回答者自身」が61.4%で最も多い一方、コンビニ店員、家族、警察、金融機関職員など回答者自身以外の関与も見られました。また、回答の重複を考慮すると、回答者単独で詐欺を見破った割合は47.8%でした[5]。これは、詐欺に強い人とは「すべての嘘を見抜ける人」ではなく、「一人で判断しない人」だということを示しています。

軍事的な視点

米海兵隊のMCTP 3-32F, Deceptionは、軍事作戦上の欺瞞についての教範であり、犯罪としての詐欺を説明する資料ではありません。しかし、人間の意思決定がどのように影響を受けるかを考察する資料としては有用です。

同教範では、欺瞞のターゲットは単なる観測者ではなく、「欺瞞目的を達成する決定を下す権限を持つ敵対的意思決定者」とされます。そして、そのターゲットの精神状態は、望ましい認識によって影響されなければならないと説明されています[6]。

この考え方を詐欺の防止に活用すると、詐欺のターゲットは電話番号やメールアドレスそのものではありません。ターゲットは、「払うべきだ」「急ぐべきだ」「これは得になる」「相談しないほうがよい」と判断してしまう意思決定者です。

さらに同教範は、欺瞞のシナリオはしばしば間接的に提示され、ターゲットが情報の断片を見て、自らの推測で全体像をつなぎ合わせると説明しています[6]。これは詐欺にも通じます。詐欺の怖さは、相手が完璧な作り話を提示することにあるのではありません。むしろ危険なのは、被害者側が「これは自分に関係がある」「これは今判断しなければならない」と、自分の経験や不安や期待を使って、自分の中で辻褄を合わせてすっかり信じ込んでしまうことです。

「導管」と「フィルター」

米海兵隊の教範『MCTP 3-32F』には、もう一つ重要な概念があります。それが「導管(conduit)」と「フィルター(filter)」です。

同教範において、導管とは情報が欺瞞ターゲットに届くまでの経路を指し、システムや組織、個人などがこれに含まれます。しかし情報は、発信された形のまま相手に届くとは限りません。途中で誰かが要約したり、別の情報と組み合わせたり、先入観や組織的な見方を交えて重要度を判断したりすることがあります。このように、情報を単に通過させるのではなく、途中で編集・解釈・重みづけを行う人や仕組みを「フィルター」と呼びます[6]。

これを詐欺防止の文脈に置き換えてみましょう。電話、メール、SNSのDM、Web広告、偽サイトなどは、単なる連絡手段ではありません。それらは、詐欺師と被害者だけの「閉じた導管」になり得るのです。

第三者に見せない、公式窓口で確認しない、家族や同僚に相談しない。そうした閉じた導管の中では、相手の説明がそのまま唯一の判断材料になってしまいます。その状態では、相手の言葉を自分に都合よく解釈し、すんなりと信じ込みやすくなってしまうのです。

逆に、防御側にとって重要なのは、意図的に「フィルター」を増やすことです。家族、友人、職場、金融機関、警察、消費生活センター、コンビニの店員への相談や、公式サイトの別経路での確認。これらはすべて、相手の話を客観的に検証するための強力なフィルターとして機能します。

したがって、詐欺対策とは単に「嘘を見抜く能力」を高めることではありません。真の詐欺対策とは、相手が作った閉じた導管から抜け出す技術なのです。

心理テクニック

特殊詐欺の啓発資料などでは、詐欺師が悪用する代表的な心理テクニックとして、以下の3つがよく挙げられます[7]。

詐欺に悪用される3つの心理テクニック

テクニック名 一般的な心理メカニズム 詐欺における危険な兆候(防衛の視点)
フット・イン・ザ・ドア 小さな要求を受け入れると、次に出される大きな要求も断りにくくなる現象[8]。 「小さな確認や返答だから安全」とは限らない。最初の小さな「はい」が、後の冷静な判断を狂わせる可能性がある。
ロー・ボール 最初に好条件で合意させ、後から不利な条件に変えても、最初の「決断」に縛られて承諾してしまう現象[9]。 途中で条件が変わったら、最初の約束は無効化してよい。「ここまで進めたから」と後戻りできなくなる心理状態が極めて危険。
ドア・イン・ザ・フェイス わざと過大な要求をして断らせ、次に本来の小さな要求を出すことで「譲歩してくれた」と錯覚させる現象[10]。 相手が「譲歩したように見える」ことと、その要求自体が「正当である」ことは全くの別物であると心得る。

これらの心理テクニックは、一般的には「人を動かす説得術」として紹介されることが多く、ビジネスなどでも語られます。

しかし、詐欺防止の観点において、これらを「単なる鮮やかな説得術」として見るべきではありません。むしろ、名目ターゲットの中から、実質ターゲットへと絞り込むためのスクリーニングとして警戒する必要があります。

それぞれのテクニックに対する、防衛側の心得は以下の通りです。

フット・イン・ザ・ドア

「これくらいなら」という小さな了承や確認が、結果的に自分の退路を断ってしまいます。些細なやり取りであっても、相手のペースに巻き込まれる入り口になり得ます。

ロー・ボール

「せっかくここまで話を進めたのだから」という心理に付け込んできます。相手が途中で条件を変えてきた時点で、最初の合意は白紙に戻して構いません。条件が変わったのにそのまま話を進めてしまうこと自体が危険です。

ドア・イン・ザ・フェイス

相手が要求を下げて「譲歩してくれた」ように感じても、それは錯覚です。相手の態度がどうであれ、最終的に突きつけられた要求を冷静に見極める必要があります。

これら3つのテクニックに共通しているのは、「被害者を一撃で洗脳する魔法ではない」という点です。詐欺師はこれらの手法を使って、ターゲットの反応をテストしています。

  • 「小さな同意に応じるか」
  • 「条件が変わってもそのまま進むか」
  • 「譲歩された感覚に引っ張られるか」
  • 「途中で第三者に相談せずに自己完結してしまうか」

こうした反応の違いを観察することで、詐欺師は名目ターゲットの中から、自分にとって都合の良い実質ターゲットを浮き彫りにしているのです。

心理テクニックと閉じた導管

心理テクニックが危険なのは、人を機械的に動かしてしまうからではありません。人間には、自分の下した判断を「筋の通った正しいもの」として理解したがる心理があるからです。フェスティンガーの認知的不協和理論は、人が自らの行動と認知の間に矛盾を抱えると不快を感じ、それを解消するために自分の判断を正当化する方向へ認知を調整すると説明しています[11]。また、ブレームが示したように、人はいったん何かを選択すると、選んだ選択肢をより望ましいものとして評価し直す傾向があります[12]。

「自分はもうこの話を進めると決めた」

「相手も譲歩してくれている」

「これは自分に利益があるかもしれない」

「誰かに相談すると面倒なことになるかもしれない」

こうした感情や状況の断片がつながると、外から押しつけられた話ではなく、「自分で納得して下した判断」のように思えてきます。ここが最も危険なポイントです。人は、他人から与えられた話よりも、自分自身で辻褄を合わせた解釈のほうを疑いにくいのです。ロー・ボールの手法が強力なのも、まさにこの「最初の決断に縛られる」心理を突いているからにほかなりません[11][12]。

消費者庁の研究で、被害届を提出した人に「自分にとって利益があると思った」「後に返金されるという言葉を信用した」という声が多かった点も、この「自分の中での辻褄合わせ」と深く関係しています。相手の説明だけでなく、本人の期待や不安が加わることで、騙されるための前提が自ら組み立てられてしまうのです[5]。

これらの心理反応は、特別に弱い人だけに起きるわけではありません。「礼儀正しくありたい」「責任感を持って対応したい」「一度決めたことを貫きたい」「損を避けたい」「得を逃したくない」「孤立した状況から早く抜け出したい」といった気持ちは、誰にでも備わっているものです。

詐欺は、そうしたごく普通の心理を、閉じた導管の中で巧みに利用しているに過ぎないのです。

詐欺から身を守るために必要なこと

詐欺対策において、「自分は騙されない」という自信に頼るのは非常に危険です。

消費者庁の調査でも、実際に騙されて被害に遭った人と、詐欺だと見破った人の間には、「根拠のない楽観視」や「自分ならうまく対処できるという自信」といった心理面に、明確な違いはありませんでした。 むしろ被害に遭った人は、詐欺の手口を知らないにもかかわらず「自分は詐欺に遭わない」という自信が高く、第三者の目が入らないメールなど、密室的なツールでやり取りを進めてしまう傾向が強いことがわかっています[5]。

つまり、詐欺に強い人というのは「相手の嘘をすべて見抜ける人」ではありません。「自分の判断を、相手が用意した架空の設定の中に閉じ込めない人」なのです。

詐欺から身を守るための防御の原則は、以下の3つにまとめられます。

  1. 最初の反応(接触)を減らす
    知らない相手からの連絡や、利益や恐怖を強く煽る連絡、決断を急がせるような連絡に対しては、その内容を理解しようとする前に、まずは距離を取ります。
  2. 条件が変わったら判断をリセットする
    最初に受け入れた話と途中で条件が変わったなら、「せっかくここまで進めたのだから」と流されるのではなく、「最初の約束とは違うので、一から判断し直す(白紙に戻す)」と考えます。
  3. 相手の用意した「導管」から抜け出す
    相手の言われるがままに返信を続けるのではなく、別ルートで事実確認を行います。相手が示した連絡先やURLではなく、自分で検索した公式窓口を使ったり、家族、友人、金融機関、警察、消費生活センターなど、必ず「第三者(フィルター)」を挟むようにします。

詐欺を防ぐ力は、「騙されないぞ」という気持ちではありません。こうした具体的な仕組みに頼ることだと言えます。

最近ではChatGPTやClaude、GeminiといったAIが相談役になることがあると思います。有効だとは思いますが、課金して使用できる賢いモデルを使うのが、より確実だと思います。

おわりに

詐欺とは、手当たり次第に狙う名目ターゲットの中から、思い通りに動く実質ターゲットをあぶり出すためのテストです。そして、相手の決断を都合よくコントロールするための、悪質な心理戦だと言えます。

私たちの生活において、最も身近な詐欺の手口が「電話」です。 たとえ電話の内容が一見すると荒唐無稽に思えても、電話口の相手は末端の「掛け子(実行役)」に過ぎません。特殊詐欺は、首謀者・指示役・掛け子・受け子などが役割を分担する組織的な犯行として敢行されており[13]、その背後には近年「トクリュウ(匿名・流動型犯罪グループ)」と呼ばれる、SNS等を通じて離合集散する流動的な犯罪グループが控えていることがあります[14]。 彼らは、心理戦に長けた騙しのプロです。決して甘く見てはいけません。

参考文献

[1] 警察庁(2026)「令和7年における特殊詐欺及びSNS型投資・ロマンス詐欺の認知・検挙状況等について(確定値)」2026年6月5日公表。URL: https://www.npa.go.jp/bureau/safetylife/sos47/assets/img/new-topics/detail/260605/01/01.pdf

[2] 広瀬弘忠・杉森伸吉(2005)「正常性バイアスの実験的検討」『東京女子大学心理学紀要』1, 81–86。URL: https://twcu.repo.nii.ac.jp/records/17266

[3] Weinstein, N. D. (1980). Unrealistic optimism about future life events. Journal of Personality and Social Psychology, 39(5), 806–820. https://doi.org/10.1037/0022-3514.39.5.806

[4] Herley, C. (2012). Why do Nigerian scammers say they are from Nigeria? Microsoft Research. URL: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/WhyFromNigeria.pdf

[5] 上野大介・徳永美和子・山本純太・石川達雄・市原健一・久保慧・宮本麗子・神原有加・栄礼司(2023)「特殊詐欺等の消費者被害における心理・行動特性」消費者庁新未来創造戦略本部国際消費者政策研究センター,リサーチ・ディスカッション・ペーパー。URL: https://www.caa.go.jp/policies/future/icprc/research_007/assets/future_caa_cms201_230621_02.pdf

[6] United States Marine Corps. (2024). MCTP 3-32F: Deception. Marine Corps Tactical Publication, 31 May 2024. URL: https://www.marines.mil/Portals/1/Publications/MCTP%203-32F%20%28SECURED%29.pdf

[7] 鈴木護(2015)「特殊詐欺における被害者心理と被害防止のポイント(要約版)」北海道警察公開資料。URL: https://www.police.pref.hokkaido.lg.jp/info/seian/sagi/04_taisaku/2015.08.28_higaibousi-point.pdf

[8] Freedman, J. L., & Fraser, S. C. (1966). Compliance without pressure: The foot-in-the-door technique. Journal of Personality and Social Psychology, 4(2), 195–202. https://doi.org/10.1037/h0023552

[9] Cialdini, R. B., Cacioppo, J. T., Bassett, R., & Miller, J. A. (1978). Low-ball procedure for producing compliance: Commitment then cost. Journal of Personality and Social Psychology, 36(5), 463–476. https://doi.org/10.1037/0022-3514.36.5.463

[10] Cialdini, R. B., Vincent, J. E., Lewis, S. K., Catalan, J., Wheeler, D., & Darby, B. L. (1975). Reciprocal concessions procedure for inducing compliance: The door-in-the-face technique. Journal of Personality and Social Psychology, 31(2), 206–215. https://doi.org/10.1037/h0076284

[11] Festinger, L. (1957). A Theory of Cognitive Dissonance. Stanford, CA: Stanford University Press.

[12] Brehm, J. W. (1956). Postdecision changes in the desirability of alternatives. The Journal of Abnormal and Social Psychology, 52(3), 384–389. https://doi.org/10.1037/h0041006

[13] 警察庁(2021)「トピックスI 組織的に敢行される特殊詐欺に対する警察の取組」『令和3年版警察白書』。URL: https://www.npa.go.jp/hakusyo/r03/honbun/html/xt100000.html

[14] 警察庁(2024)「第1節 匿名・流動型犯罪グループの特徴と動向」『令和6年版警察白書』。URL: https://www.npa.go.jp/hakusyo/r06/honbun/html/aaf111000.html

そもそもなぜ事前学習(Pre-training)が要るのか?

はじめに

この記事では,ニューラルネットワークを乱数初期化のまま学習させたときに発生する 「初期化の罠」 を整理し,その回避策としての事前学習を原理から紹介します.Transformer や ResNet がどうして安定的に学習できるのか.最新の理論をもとに掘り下げながら,「事前学習モデルを微調整するのが一番コスパが良い理由」を示したいと思います.


1. いきなり Fine‑tune はダメ?

深層モデルの損失関数は高次元かつ非凸ですが,実際には Transformer や ResNet がサクッと収束するケースのほうが多いです.ところが,小規模データをゼロから Transformer で Fine‑Tune しようとすると,勾配が発散したり精度がガタ落ちしたりするシーンが報告されています.たとえば Spider (∼7 k 訓練例) では,標準初期化の Transformer は 8 層超で学習が完全に破綻することが報告されています[1].
一方で,BERT などの事前学習済み重みを読み込んで数エポックだけ微調整すると,安定的かつ高精度で着地します.BERT は 2.5 k 例しかない RTE にも 3 エポックで 70 % 超の SOTA を達成しています[2].

なぜ「スクラッチ学習」と「事前学習+微調整」でこんなに差がつくのでしょうか.ここで鍵になるのが損失ランドスケープの形状と初期値の位置関係です.そこで,まずは次の二点を確かめてみることにします.

疑問点

  1. 損失ランドスケープに「悪い局所極小」は本当に残っているのか?
  2. もし残っているなら,どんな初期値がその深みにはまりやすいのか?

2. 初期化の罠

2‑1. Transformer に潜む良性領域 I★

Makkuva ら[3]は「1 層 Transformer × 1 次 Markov データ」を厳密に解析し,初期値が 良性領域 I★に入ると必ず大域最適へ流れ着き,I★ を外すと局所極小で足踏みすることを示しました.I★ に含まれる条件は「重みスケール×Markov 遷移確率」の不等式で書けるのですが標準ガウス初期化だと高確率で I★ を外すと主張しています.

図1では,

  • データ側の指標 = Markov の遷移確率の和 (p + q)
  • モデル側の指標 = 埋め込みベクトル e と重み w の初期スケール

という 2 軸で平面を描き,その上に
緑=大域最適へ流れ込む領域 I★,赤=局所極小で足踏みする領域 を色分けしています.

結論だけつまむと,

  • おとなしい系列 (p + q < 1) なら,原点近くの小さな初期化でも I★ 内に入りやすく,自然に大域最適へ導かれる.
  • コロコロ状態が切り替わる系列 (p + q > 1) だと,原点周辺は I★ の外に追いやられ,標準ガウス初期化 (σ = 0.02) はほぼ必ず局所極小に捕まる.

この2つを図が対照的に描き出しており,「安全域に入り込むには,事前学習で座標を合わせておくとよい」ということが導かれます.

要するに,事前学習重みは「データの揺らぎに合わせてスケールが調律済み」なので,最初から I★ の真ん中にワープできるということになります.

図 1: Transformer(2 次元設定)の勾配流と収束領域

2‑2. 他アーキテクチャに共通する良性条件

理論結果 ランドスケープの性質 初期化・モデル幅との関係
ResNet(Kawaguchi & Bengio, 2019)[4] 残差接続で悪い局所極小ゼロ ガウス初期化でもかなり安全
重み減衰付き二層 ReLU の凸最適化(Lacotte & Pilanci, 2020)[5] 重み減衰付きで凸問題に帰着 隠れユニット数が臨界値に達すると 悪い局所極小が消滅し,損失景観が “凸的” になる
オーバーパラメータ化 ReLUネットワーク(Karhadkar et al., 2024)[6] ほとんどの領域で局所=大域 幅を増やすほど安全域が拡張

要は,幅を盛る・残差を挿す・正則化をかけると損失谷が「平らでつながった安全地帯」に変形します.でも その谷にたどり着けるかは初期値の運次第と言えます.事前学習は谷への近道を作る,というわけです.

図 2: Gaussian 初期化の危険域


3. 事前学習が効く五つの理由

  1. 良性領域へのショートカット
    事前学習済み重みは Transformer の I★,ResNet のフラットな谷など,安全地帯を初期位置にしてくれます.

  2. 表現多様体の事前獲得
    自己教師あり学習により低ランク&情報圧縮された構造が重み空間に刻まれ,下流タスクの損失が滑らか&低次元化します [7, 8, 14–16].

  3. データ効率の向上
    PAC-Bayes1 的には「良い先験」を持つほど少サンプルでも一般化保証が強まります.自己教師ありで得た事前分布を解析した研究では,ImageNet のラベル数を 1/10 まで削っても性能を保てることが示されています [9].

  4. 最適化の安定化
    勾配爆発/消失の元凶はスケール不整合.事前学習重みは層ごとのスケールが整っているため,学習率を上げても収束が速く確実になると報告されています [11, 17].

  5. フラット方向を利用した微調整
    過パラメータ化で生じる“フラット多様体”上を低エネルギーで移動できるため破滅的忘却が抑えられます.LoRA や Adapter 手法がごく少ない更新量で済むのは,事前学習後にパラメータ空間の有効次元が大幅に圧縮されているからだと説明されています [12, 13].


4. 具体例:良い初期化が劇的に効くケース

具体的には,1 次 Markov データの遷移確率 p(0→1)と q(1→0)の和が 1 を超える,つまり「状態がコロコロ入れ替わる」厳しい条件(p + q > 1)を想定します.この設定では,標準ガウス初期化 (σ = 0.02) だと学習がユニグラム並みの損失に沈んでしまいます.一方で,理論に基づいて重みを e = 0.5,W₁ = 1,W₂ = −1 に置くとバイグラムの最適損失までストンと収束します.しかもそのあいだ,重み行列はずっとランク 1 を維持、低ランク初期化の強みが数字にも図にもはっきり現れています.

青線=ユニグラム,オレンジ線=バイグラム
図 3: 標準初期化 vs. 理論初期化の損失曲線


5. まとめ

  1. 計算コスト:スクラッチ学習は I★ の外側をさまよう試行錯誤フェーズに GPU 時間を大量消費するが,事前学習+微調整は “谷の中心” スタートなのでエポック数が桁違いに少なくて済む.
  2. データコスト:PAC‑Bayes 的に「良い事前分布」を持つモデルは少サンプルでも汎化保証が強くなるため,追加ラベルを集めるコストが抑えられる.
  3. 失敗リスク:標準初期化は p + q > 1 の厳しい領域で発散・劣化が起きやすいが,事前学習重みは実証的に I★ 内にあり,学習破綻の再現率がきわめて低い.
  4. 再現性:公開 Foundation Model をベースにすれば,ほぼ同じ初期条件を共有でき,ベンチマーク再現が容易になる.
  5. 拡張性:LoRA や Adapter 系の“微更新”と親和性が高く,将来の下流タスク追加も差分学習で回せるため,総ライフサイクルコストが下がる.

参考文献

[1] Peng Xu, Dhruv Kumar, Wei Yang, Wenjie Zi, Keyi Tang, Chenyang Huang, Jackie Chi Kit Cheung, Simon J. D. Prince, and Yanshuai Cao, “Optimizing Deeper Transformers on Small Datasets,” arXiv preprint arXiv:2012.15355 (v4), May 2021 — ACL 2021 採択.

[2] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova, “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,” Proceedings of NAACL-HLT 2019, pp. 4171–4186, June 2019.

[3] Ashok Vardhan Makkuva, Marco Bondaschi, Chanakya Ekbote, Adway Girish, Alliot Nagle, Hyeji Kim, and Michael Gastpar, “Local to Global: Learning Dynamics and Effect of Initialization for Transformers,” arXiv preprint arXiv:2406.03072, June 2024.

[4] Kenji Kawaguchi and Yoshua Bengio, “Depth with Nonlinearity Creates No Bad Local Minima in ResNets,” Neural Networks, vol. 118, pp. 167–174, 2019.

[5] Yifei Wang, Jonathan Lacotte, and Mert Pilanci, “The Hidden Convex Optimization Landscape of Two-Layer ReLU Neural Networks: An Exact Characterization of the Optimal Solutions,” arXiv preprint arXiv:2006.05900, June 2020.

[6] Kedar Karhadkar, Michael Murray, Hanna Tseran, and Guido F. Montúfar, “Mildly Overparameterized ReLU Networks Have a Favorable Loss Landscape,” arXiv preprint arXiv:2305.19510 (v3), February 2024.

[7] Hanxun Huang, Ricardo J. G. B. Campello, Sarah M. Erfani, Xingjun Ma, Michael E. Houle, and James Bailey, “LDReg: Local Dimensionality Regularized Self-Supervised Learning,” arXiv preprint arXiv:2401.10474 (v2), March 2024 — ICLR 2024 採択.

[8] Ravid Shwartz-Ziv, Amichai Painsky, and Naftali Tishby, “Representation Compression and Generalization in Deep Neural Networks,” Proceedings of ICLR 2019, May 2019.

[9] Ting Chen, Simon Kornblith, Mohammad Norouzi, and Geoffrey Hinton, “Big Self-Supervised Models Are Strong Semi-Supervised Learners,” arXiv preprint arXiv:2006.10029, June 2020 — NeurIPS 2020 (SimCLRv2).

[10] David Berthelot, Nicholas Carlini, Ian Goodfellow, Nicolas Papernot, Avital Oliver, and Colin A. Raffel, “MixMatch: A Holistic Approach to Semi-Supervised Learning,” Proceedings of NeurIPS 2019, December 2019.

[11] Hongyu Wang, Shuming Ma, Li Dong, Shaohan Huang, Dongdong Zhang, and Furu Wei, “DeepNet: Scaling Transformers to 1,000 Layers,” arXiv preprint arXiv:2203.00555, March 2022.

[12] Armen Aghajanyan, Sonal Gupta, and Luke Zettlemoyer, “Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning,” Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics (ACL 2021), pp. 7319–7328, August 2021.

[13] Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shane Wang, and Weizhu Chen, “LoRA: Low-Rank Adaptation of Large Language Models,” Proceedings of ICLR 2023, May 2023.

[14] Hao Li, Zheng Xu, Gavin Taylor, Christoph Studer, and Tom Goldstein, “Visualizing the Loss Landscape of Neural Nets,” Advances in Neural Information Processing Systems 31 (NeurIPS 2018), December 2018.

[15] Stanislav Fort and Stanislaw Jastrzebski, “Large Scale Structure of Neural Network Loss Landscapes,” Advances in Neural Information Processing Systems 32 (NeurIPS 2019), pp. 6706–6714, December 2019.

[16] Behrooz Ghorbani, Shankar Krishnan, and Ying Xiao, “An Investigation into Neural Net Optimization via Hessian Eigenvalue Density,” Proceedings of the 36th International Conference on Machine Learning (ICML 2019), pp. 2232–2241, June 2019.

[17] Akhil Kedia, Mohd Abbas Zaidi, Sushil Khyalia, Jungho Jung, Harshith Goka, and Haejun Lee, “Transformers Get Stable: An End-to-End Signal Propagation Theory for Language Models,” arXiv preprint arXiv:2403.09635, March 2024 — ICML 2024 採択.


  1. PAC-Bayes (Probably Approximately Correct Bayesian) は,事前(prior)と事後(posterior) という「確率分布でモデルを眺める視点」を導入し,「訓練データでうまく行ったモデルが、未知データでも失敗しにくいこと」を理論的に保証する枠組みの一つ.

トップダウン型の自動微分を実装する

はじめに

だいぶ前に書いていたコードですが、C++でTD型の自動微分を実装したので公開します。 自動微分については以下の記事を参考にさせていただきました。

kivantium.hateblo.jp

C++のコード

C++書いたコードは以下の通り。 自分が書いたコードはC++14に対応していましたが、話題のChatGPTを用いて、C++17に対応するようにリファクタリングしてもらいました。

Variable::backward でグラフを幅優先探索で辿ってる以外はクラスの定義や演算子オーバーロードを行っているだけなので、スッと読めると思います。

#include <iostream>
#include <deque>
#include <unordered_set>
#include <vector>
#include <memory>
#include <tuple>
#include <functional>

template <typename T>
auto enumerate(T &container)
{
  std::vector<std::tuple<std::size_t, decltype(*std::begin(container)) &>> enumerated;
  std::size_t index = 0;
  for (auto &item : container)
  {
    enumerated.emplace_back(index, item);
    ++index;
  }
  return enumerated;
}

class Function;
class Variable;

class Variable
{
public:
  double data;
  double grad;
  std::shared_ptr<Function> creator;

  Variable(const double data)
      : data(data), grad(1.0), creator(nullptr) {}

  void set_creator(const std::shared_ptr<Function> &gen_func)
  {
    creator = gen_func;
  }

  void backward();
};

class Function : public std::enable_shared_from_this<Function>
{
public:
  std::vector<std::shared_ptr<Variable>> inputs;
  std::shared_ptr<Variable> output;

  std::shared_ptr<Variable> operator()(const std::shared_ptr<Function> &self, const std::shared_ptr<Variable> &input1, const std::shared_ptr<Variable> &input2 = nullptr)
  {
    inputs = {input1, input2};
    const double y = forward();
    output = std::make_shared<Variable>(y);
    output->set_creator(self);

    return output;
  }

  virtual double forward() const = 0;
  virtual std::vector<std::shared_ptr<Variable>> backward(const double gy) const = 0;
};

class Add : public Function, public std::enable_shared_from_this<Add>
{
public:
  double forward() const override
  {
    return inputs[0]->data + inputs[1]->data;
  }

  std::vector<std::shared_ptr<Variable>> backward(const double gy) const override
  {
    return {std::make_shared<Variable>(gy), std::make_shared<Variable>(gy)};
  }
};

class Mul : public Function, public std::enable_shared_from_this<Mul>
{
public:
  double forward() const override
  {
    return inputs[0]->data * inputs[1]->data;
  }

  std::vector<std::shared_ptr<Variable>> backward(const double gy) const override
  {
    return {std::make_shared<Variable>(gy * inputs[1]->data),
            std::make_shared<Variable>(gy * inputs[0]->data)};
  }
};

std::shared_ptr<Variable> operator+(const std::shared_ptr<Variable> &lhs, const std::shared_ptr<Variable> &rhs)
{
  auto add_func = std::make_shared<Add>();
  return add_func->operator()(add_func, lhs, rhs);
}

std::shared_ptr<Variable> operator*(const std::shared_ptr<Variable> &lhs, const std::shared_ptr<Variable> &rhs)
{
  auto mul_func = std::make_shared<Mul>();
  return mul_func->operator()(mul_func, lhs, rhs);
}

std::shared_ptr<Variable> operator+(const std::shared_ptr<Variable> &lhs, const double rhs)
{
  auto rhs_var = std::make_shared<Variable>(rhs);
  return lhs + rhs_var;
}

std::shared_ptr<Variable> operator+(const double lhs, const std::shared_ptr<Variable> &rhs)
{
  auto lhs_var = std::make_shared<Variable>(lhs);
  return lhs_var + rhs;
}

std::shared_ptr<Variable> operator*(const std::shared_ptr<Variable> &lhs, const double rhs)
{
  auto rhs_var = std::make_shared<Variable>(rhs);
  return lhs * rhs_var;
}

std::shared_ptr<Variable> operator*(const double lhs, const std::shared_ptr<Variable> &rhs)
{
  auto lhs_var = std::make_shared<Variable>(lhs);
  return lhs_var * rhs;
}

void Variable::backward()
{
  if (creator == nullptr)
  {
    return;
  }

  std::unordered_set<size_t> visited;
  std::deque<std::shared_ptr<Function>> queue{creator};

  while (!queue.empty())
  {
    auto function = queue.front();
    auto output = function->output;
    auto gy = output->grad;
    auto gxs = function->backward(gy);

    queue.pop_front();

    for (const auto &[i, gx] : enumerate(gxs))
    {
      auto x = function->inputs[i];

      if (gx == nullptr)
      {
        continue;
      }

      std::size_t id_x = std::hash<std::shared_ptr<Variable>>{}(x);
      if (x->creator != nullptr)
      {
        queue.push_back(x->creator);
      }

      if (visited.find(id_x) == visited.end())
      {
        x->grad = gx->data;
        visited.insert(id_x);
      }
      else
      {
        x->grad += gx->data;
      }
    }
  }
}

int main()
{
  auto x = std::make_shared<Variable>(1.0);
  auto y = std::make_shared<Variable>(1.0);

  auto z = x * x + 2 * x * y + y ;
  std::cout << "z = x * x + 2 * x * y + y " << std::endl;
  z->backward();

  std::cout << "x = " << x->data << ", x.grad = " << x->grad << std::endl;
  std::cout << "y = " << y->data << ", y.grad = " << y->grad << std::endl;

  return 0;
}

コンパイルと実行は以下の通りです。

$ clang++ -std=c++17 main.cpp
$ ./a.out

おわりに

C++も好きな言語ではあるんですが、今後はRustを使って何か実装できたらいいなと考えています。

ニューラルネットの調和解析

はじめに

この記事はDeep Learning Advent Calendar 2016 3日目の記事です.

とうとうAdventCalendar以外でブログを更新しなくなってしまいましたが,元気よく書いていきたいと思います.

今回はニューラルネットブラックボックス性とその解析をしている論文の紹介です.Deep Learning Advent Calendarをやるぞ!と言っておきながら,この記事で取り上げるのは浅いニューラルネットです.

ニューラルネットブラックボックス性とその議論

ニューラルネット自然言語処理音声認識,ゲームAIなどの様々なタスクに応用されるようになり,いずれも大きな成果を挙げていることに間違いはありません.

しかしその一方で,ニューラルネットは中間層を挟むため,学習で得られる内部状態は不明瞭となります.このことから,結果の考察がしにくいという理由で忌避されることも多いと思います*1

この問題は1980年代後半から議論されています.議論は中間層の素子数と目的関数の近似誤差の関係に着目するという方向性となり,"基底となる関数を自由に選べるという条件下で,中間層素子が無限にあれば任意の関数を近似できる"という命題のもと,様々な証明のテクニックが考案されました.Irie, Miyake, Cybenko,Whiteらは,フーリエスライス定理やラドン変換などの概念に基づいて,この命題を証明しています[1, 2, 3].Funahashiはまた,Kolmogorov-Arnoldの定理とSprecherの定理を使って証明を与えています[4].

この議論を進めていくうちに,Anzellottiは,目的関数のクラスを限ると,3層ネットワークの平均二乗誤差の上限は中間層の数に反比例することを示しました[5].それは多層ネットワークと勾配降下法を用いた手法が,次元の呪い*2に束縛されないことを意味しています.

1996年にMurata[6],1998年にはCandes[7]が,ニューラルネット非線形変換に適したRidge関数を用いて,Ridge関数の積分変換と逆変換を定義し,この積分表現(後述します)を利用することで,Murataらは単純な3層ネットワークの中間層の素子に直接的な意味を与えられることを示しました. このアイデアは,3層ネットワークの関数近似の問題を過完備基底関数系上での展開と捉え.その近似性能を論じたものです.

積分表現はニューラルネット関数解析的に扱えるという大きなメリットがあります.この積分表現について,少しだけ触れていきたいと思います.

まずはRidge関数の積分表現です.

Ridge関数を用いた積分表現

Ridege関数の積分表現は以下のリンク先で書いたので,こちらを参照して頂きたいと思います.

hackmd.io

MurataはこのRidge関数の積分変換を3層ネットワークに取り入れることで,中間素子数nの3層ネットワークの平均二乗誤差がオーダ1/n以下で近似できると定量的に示しました.

その後,Sonodaらはこの理論を発展させ,活性化関数の新しいデファクトスタンダードであるRectified Linear Unit (ReLU)を用いた場合でも,3層ネットワークが上記で示した万能近似性能を有していることを示しています[8].

次は,ニューラルネット積分表現です.

ニューラルネット積分表現

活性関数ηを持つニューラルネット(3層ネットワーク)の関数 \( f : \mathbb{R}^m → \mathbb{C} \)の近似を以下のように定義します.

f:id:olanleed:20161203060403p:plain

この時,\( (a_j, b_j) \) は中間層(hidden layer)のパラメータで,\( c_j \)は出力層のパラメータです. このニューラルネット\( g_J(x) \)は,以下のニューラルネット積分表現を離散化することによって得ることができます.

f:id:olanleed:20161203060517p:plain

ニューラルネットの和の部分を積分に置き換え,連続化した関数を得ることを積分表現といいます.

\( \mathbb{Y}^{m+1} \) は中間層のパラメータ空間 \( \mathbb{R}^m \times \mathbb{R} \)です.右辺は,ηに対するT(a, b)の双対リッジレット変換とされています.

f:id:olanleed:20161203055625p:plain

T(a,b)において,Ψに関するfのリッジレット変換を代入することによって

f:id:olanleed:20161203061137p:plain

を得ます.そして,Ψとηが許容条件

f:id:olanleed:20161203065151p:plain

を満たす時,fに対して次のような再生公式が成り立ちます.

f:id:olanleed:20161203061850p:plain

得られた再生公式を離散化することにより,活性化関数ηを用いたニューラルネットの近似性能を検証することができるとされています.

ReLUネットワークへの拡張

先の方法は活性化関数ηが有界関数(sigmoid関数やtanh関数)を用いた場合でのリッジレット変換であり, ReLUのような非有界関数を扱うことは想定されていませんでした.そこでSonodaらはアイデアを拡張して,活性化関数ηがReLUのような非有界かつLizorkin超関数に属するクラスであっても,ReLUネットワークを積分表現で分析できることを示しました.ReLUネットワークの万能近似性能については,フーリエスライス定理,ラドン変換,パーセバルの定理を用いた3つの再生公式によって,それを満たすことが示されています.そして,ニューラルネットが学習の結果として獲得する情報表現の正体はリッジレット変換であると述べています.

この論文の非常に興味深い主張として,許容条件に従えば,リッジレット変換を単純に離散化することによって,誤差逆伝播を経たずにネットワークを学習させることが可能であるということです.また,この理論を応用することでランダム初期化よりも有利な条件で学習させる方法も示しています[9].

深層学習への応用

深層学習の積分表現は自明ではないらしく,論文は投稿の最中ということなので,公開を待つことにします.

おわりに

ニューラルネットの解析は私が強く興味を持っている研究の一つなので,今回取り上げた論文はとても面白く感じました. 私の理解が足りてない部分が多々あるので,それぞれの要素や論文についても時間が取れたら書きたいところです.

参考文献

[1] Irie and Miyake. Capabilities of three-layered Perceptrons. In Proceedings of International Conference on Neural Networks. pp. 641-648 (1988).
[2] Cybenko. Approximation by superpositions of a sigmoid function. Mathematics of Control, Signals and Systems, pp. 303-314 (1989).
[3] White H. Connectionist nonparametric regression: multilayer feedforward networks can learn arbitrary mappings. Neural Networks. pp. 535- 549 (1990).
[4] Funahashi. On the approximate realization of continuous mappings by neural networks. Neural Networks. pp. 183-192 (1989).
[5] Girosi and Anzellotti. Convergence rates of approximation by translates (Tech. Rep. A.I. memo 1288). Articial Intelligence Laboratory, Massachusetts Institute of Technology (1992).
[6] Noboru Murata. An Integral representation of functions using three-layered networks and their approximation bounds. Neural Networks, Vol. 9, No. 6, pp. 947–956 (1996).
[7] Cands, E. J. Harmonic analysis of neural networks, Appl. Comput. Harmon. Anal. 6, pp. 197-218 (1999).
[8] Sho Sonoda, Noboru Murata. Neural network with unbounded activation functions is universal approximator. Appl. Comput. Harmon. Anal (2015).
[9] Sho Sonoda and Noboru Murata. Sampling hidden parameters from oracle distribution. In 24th Int. Conf. Artif. Neural Networks, Vol. 8681, pp. 539–546 (2014).

*1:膨大なデータ量と計算リソースの必要性も含まれると思いますが

*2:精度が入力次元の大きさに強く依存する性質

第24羽 chainer-goghを愛した少女と名画に愛された少女

この記事はごちうさ Advent Calendar 2015 24日目の記事です.

gochiusa.connpass.com

はじめに

パリのルーヴル美術館に行きたい思っているのですが,資金的な問題があるため毎日インターネットでグーグル美術館です.どうもolanleedです.

論文投稿に追われたり風邪をこじらせたり,激しいDeep LearningMacBookが故障したりする怒涛の12月でしたが,今期のアニメ「ご注文はうさぎですか??」のおかげで正気を保てています.

ありがとう,ごちうさ

今日はchainer-goghを使い,ごちうさの登場人物と世界の絵画を合成して「ご注文はうさぎですか?」美術展覧会を開きたいと思います.

今回用いたchainer-goghについてはこちらに書かれております.

https://research.preferred.jp/2015/09/chainer-gogh/

それではご覧下さい.

1枚目「コーヒーを注ぐチノ」

f:id:olanleed:20151224011351p:plain

ヨハネス「牛乳を注ぐ女」とチノちゃんの合成です.

油彩のタッチにより独特な雰囲気となってますね.

2枚目「淑女」

f:id:olanleed:20151224011331p:plain

マルタン・カヴェルの絵画(名前忘れました...)とリゼさんの合成です.

淑女というタイトルをつけたんですけど,元のリゼさんがエロいためなんかエロいです.

3枚目「金髪比」

f:id:olanleed:20151224010849p:plain

ダ・ヴィンチの人体図とシャロちゃんの合成です.

巨匠同士の絵を合成したはずなのに,なぜか落書きっぽい絵が生成された...

4枚目「桜下千夜」

f:id:olanleed:20151224010506p:plain

菊川英山「桜下美人」とチヤさんの合成です.

チヤさんと浮世絵の画風がすごくマッチしてます.

傑作「叫び」

f:id:olanleed:20151224005631p:plain

ムンク「叫び」とココアさんの合成です.個人的に一番これが好きです.

ココアさんの表情が「叫び」をよく表現してます.

Deep Learningのハイパパラメータの調整

この記事はDeep Learning Advent Calendar 2015 23日目の記事です.

はじめに

コンピュータセキュリティシンポジウム2015 キャンドルスターセッションで(急遽)発表したものをまとめたものです.

また,私の体力が底を尽きてるので,後日に大幅な加筆・修正します.

Deep Learning Advent Calendar 21日目の記事はすいません,しばらくお待ちください...

Deep Leaningの光と闇

Deep Learningが様々なタスクにおいて大きな成果を上げています.また,各種フレームワークの登場によって,Deep Learningの導入や実践する敷居が大幅に下がりました.このことから,Deep Learningを活用していこうと考えてる,あるいはすでに活用している企業や研究者が増えてきています.

Deep Learningによって従来の手法を大きく上回る性能を発揮したり,今まで実現できなかったことが実現できたりと脚光を浴びてる一方で,「あるタスクにDeep Learningを導入したものの,所望の効果が得られない」あるいは「従来の手法に性能で負けてしまった」などと,うまくいかないこともあると思います.

高いポテンシャルを秘めてることは確かのですが,Deep Learningは深いアーキテクチャなだけに深い考察が必要です.そのため,以下のことを考えなくてはなりません.

  1. タスクごとにネットワークの構成を考えなくてなはらない

  2. 最適な(あるいは最適に近い)ハイパパラメータを求めなくてはならない

1に関しては,例えば画像認識をやる場合はCNNを使うと思います.CNNにも色々な構成があるので,問題に応じて色々構成を変えると性能が良くなることがあります.タスクに応じてstate-of-the-artな構成が公開されていることがあるので,それを用いるのが良いでしょう.

一番問題なのは,2のハイパパラメータの調整だと思います.

機械学習アルゴリズムは基本的に調整が必要なハイパパラメータが存在します.これをデタラメに調整したかと厳密に調整したかどうかで性能は雲泥の差があります.

学習させる全てのタスクにおいて共通の最適なハイパパラメータがあれば,1回だけ厳密に求めてあとは使い回せば良いのですが,基本的にタスクごとに求める必要があります.

AROWやSCWなどのオンライン線形分類器はハイパパラメータが1・2個しかないのに対して,ニューラルネットワークで構成されていることが多いDeep Learningでは,ハイパパラメータはとんでもない数になります(学習係数,隠れ層のユニット数,層の段数,epoch,dropout,momentum,weight decay,batch size...etc.).

これを探索する手法はグリッドサーチがよく用いられます.しかし,ハイパパラメータが1つ増えるたびに組み合わせの数が爆発的に増えるため,1回の試行時間が長いかつ組み合わせ数が多いDeep Learningでグリッドサーチを行うのは現実的ではありません.

では,このたくさんのハイパパラメータをどうやって調整するのでしょうか.

ランダムサンプリング

ランダムサンプリングとは,文字通り無作為にパラメータを抽出していく方法です.

f:id:olanleed:20151223151040p:plain

パラメータには重要なパラメータとそうでないパラメータが存在します.グリッドサーチではこの重要なパラメータが探索から漏れてしまうことがありますが,ランダムサンプリングだとこれを拾えるだけでなく,探索の分布や幅などを変えるといったことが可能です.

他にも探索が高速,いつ計算を打ち切ってもよい,並列化が容易などでグリッドサーチよりも大きなメリットがあります.

詳細は以下の論文に書かれています.

http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf

Bayesian Optimization

http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf

関数の最適化問題とみなして,学習器を最適化していく手法が存在します.ハイパパラメータをx,学習器の誤差関数をf(x)として,このf(x)を最小にするxを求めていきます.

ただし,Deep Learningの関数の形はわからないため,BlackBox関数の最適化問題となります.

BlackBox関数の最適化手法には遺伝的アルゴリズムや差分進化法*1がなどが有名でしょう.

この項で紹介するBayesian Optimizationでは,"BlackBox関数の事前分布を仮定し,事後分布を見て最適化する"という手法をとっています.

Bayesian Optimizationの流れは以下のとおりです.

  1. f(x)を何かしらの手法で事前分布を仮定する
  2. ランダムに生成したサンプル点のf(x)を評価し,f(x)の事後分布を決める
  3. 得たf(x)の事後分布と,サンプル点の候補としての良さを測る

Bayesian Optimizationを実行する際に行われなければならない二つの主要な項目があります.

第一に,BlackBox関数の事前分布を仮定する必要がありますが,このBlackBox関数は直接最適化が難しいため,何かしら計算しやすい形で近似します.論文の著者は,柔軟性と扱いやすさから"Gaussian process "という手法を用いています.

Gaussian processについては以下の記事が参考になります.

naoyat.hatenablog.jp

Gaussian processは平均と共分散をパラメータとして受け取りますが,共分散を計算するためにはカーネルが必要です.

論文では ARD Matern 5/2と呼ばれるカーネルを利用しています.

f:id:olanleed:20151223170843p:plain

第二に,GPでBlackbox関数を近似した後,次に調べるサンプル点を決める必要があります.これを闇雲に決めるのではなく,いくつかサンプルする候補を作って「候補の良さ」を測ります.

これに"Acquisition Function"というものを使います.これはサンプル点がf(x)を最小にするような期待値を算出するもので,算出した期待値を「候補としての良さ」とします.

Acquisition Functionには以下のようなものがあります.

Probaiblity of Improvement (PI)

f:id:olanleed:20151223171646p:plain

これまでのベストを更新する確率が最大となる点を次のサンプル点とする.

Expected Improvement (EI)

f:id:olanleed:20151223172128p:plain

これまでのベストに対してどれだけ更新できそうかの期待値を最大化する点を次のサンプル点とする.

GP Upper Confidence Bound(GP-UCB)

f:id:olanleed:20151223172418p:plain

平均と分散の和がもっとも大きなところを次のサンプル点とする.

論文ではEIが一番性能が良いとされています.ただし,Acquisition Functionも多峰性の関数なので,ランダムに生成した候補点を用いてx_t = argmax(a(x_m))となる候補x_mを次のサンプル点x_tとします.

上記より,Bayesian Optimizationではx_t = argmax a(x_m)x* = argmin f(x_t)という過程を繰り返して目的関数を最小化していきます.

おわりに

まとめです.

  • 気軽に探索したいのであればランダムサンプリングを使う
  • 少し気合を入れて探索したいのであればBayesian Optimizationを使う

Bayesian Optimizationも実装がかなり出回っているので,そのうち試してみようと思います.

最後の方がかなり適当になってしまったので,後日加筆します.