進化計算
from 機械学習と最適化
勾配法の弱点
勾配法の弱点
微分情報に基づくので局所最適解に陥りやすい
勾配が小さいと探索が進みにくい
評価関数の形がわかっていて、微分可能でないといけない
https://gyazo.com/b37669660d199630517bcca3ee0e3bd6
メタヒューリスティクス
メタヒューリスティクス
ヒューリスティクス:うまくいく保証はないが、だいたいうまくいくことが経験的にわかっている方法(発見的解法)
いろいろな問題に対応できる汎用的な手法として、「ヒューリスティクス」の「メタ(高次)」、つまり「ヒューリスティクスを生み出すヒューリスティクス」がメタヒューリスティクス
多くのメタヒューリスティクスの特徴
多点探索(さまざまな可能性を並列に探れる)
評価関数の形状が不明でも、評価関数の「値」だけ得られれば良い(微分により勾配を計算しなくてよい)
確率的操作により局所解を抜け出し得る
メタヒューリスティクスと進化計算
メタヒューリスティクスには生物にヒントを得た手法が多い
つまり、生物に関わる現象には、「最適化」のアナロジーでとらえられる仕組みが多く存在し、これに倣った数理的手法が考案されている
蟻の群れは、フェロモンを利用して仲間が見つけた「良い場所(エサのある場所など)」に集まる
生物の進化は、「環境に適した種」が生き残ることによって起こるプロセスである など
こうした最適化アルゴリズムを総称して進化計算(Evolutionary Computation)とよぶ
群知能、進化的アルゴリズムなど
さまざまな進化計算
進化的アルゴリズム
遺伝的アルゴリズム
遺伝的プログラミング
進化戦略
差分進化(Differential Evolution)
群知能
粒子群最適化(PSO)
アント(蟻)コロニー最適化
など
その他のメタヒューリスティクス
タブーサーチ
焼きなまし法(Simulated Annealing)
人工免疫システム(Artificial Immune System)
活用と探索のトレードオフ(ジレンマ)
いかに効率よく探索するか?
対象とする範囲(実行可能領域)をなるべくまんべんなく探索したい
現実の問題は(かなり)多次元の探索であり、空間が広すぎて「まんべんなく」はムリ
また、評価関数は複雑な形をしていることが多い
こうした現実の最適化問題を進化計算などのメタヒューリスティクスで解く場合、Exploitation(活用)とexploration(探索)のジレンマへの対処が本質的に重要となる
強化学習#65ac7189dbcf3c0000df6b41で述べたものと同様
たとえば遺伝的アルゴリズムでいうと・・
「交叉」はある種の「情報のシェア」ともいえる
良い解の「知見」をうまく活用する → exploitation
局所探索(ローカルサーチ)が進む
「突然変異」は、新しい可能性を切り開く操作といえる
探索範囲を開拓する → exploration
大局的な探索
うまくexplorationができないと局所解にとらわれる(多様性が必要)
粒子群最適化(PSO)でいうと・・・
pbest(personal best)への加速度が加わることで、局所探索(ローカルサーチ)が進む → "exploitation"
gbest(global best)への加速度が加わることも、ある種の「群としてのローカルサーチ」の働きをもつともいえる → "exploitation"
慣性項があることで現在の速度成分がある程度保たれることや、pbestやgbest(global best)への加速度の項の重みが乱数に基づくことによって、局所解を抜け出すためのランダムな力学がはたらく → "exploration"
これらのバランスをうまくとることが大事
上述のようなパラメータをうまく設定することでこのバランスをとり、「過去の知見をうまく活かしつつも多様性を保つ」ことによって、複雑な評価関数のもとでよりよい解を得る「可能性を高める」ことを進化計算ではねらっているといえる
進化計算の面白さと難しさ
確率(乱数)をうまく活用した方法であるということ
乱数の使用による確率的操作
数学的に解けない最適化問題も、確率的操作によって「手当たり次第」より効率的に解を見つけられる
機械学習はある意味「確率との戦い」であるが、進化計算はむしろ確率を武器にしている手法
(参考)深層学習のメカニズム#65518c7cdbcf3c0000bc72a1で述べた確率的勾配法も、勾配法に乱数によるサンプリング操作を用いることで局所解を抜け出したり探索を効率化する方法である
確率的探索なので、実行のたびに結果が異なることには注意が必要
最適解が得られる理論的な保証はない(ことが多い)
パラメータ(つまり、「武器」として用いる確率の、確率分布のパラメータともいえる)の設定が命であり、そしてそれが難しい
「評価関数」について
進化計算(最適化)における「評価関数」
「評価」こそが進化のキモ
評価関数で表現された「良い」方向へ解が「ひとりでに」動いていく、というイメージをもつ
ということは、評価関数の決め方によって得られる解の質が変わる、ということである
つまり、「評価関数の決め方(評価のしかた)」が根本的に重要(強化学習も同じ)
どのように評価関数を決めるか?
数式で表せる場合はいいが……
解候補を見て、人間が評価を入力する「対話型進化計算」というものもある
作曲など、芸術分野への応用など
評価にコストがかかるものは、評価関数をニューラルネットワーク等で近似するという手法もある
機械学習と進化計算
モデルの複雑さにあったように、たとえばニューラルネットワークのようなモデルは、層の数、ニューロンの数などのモデル構造を設計者が決める必要がある
手動ではなく、うまくデータをもとに自動的に適切な複雑さを決められないか?
→「よい」モデルの構造を決めたい
→ モデル構造を最適化したい
→ 最適化手法として進化計算を用いるニューロエボリューション(neuro evolution)とよばれる手法も研究されている
進化型ニューラルネットワーク(EANN: Evolutionary Artificial Neural Network)ともよばれる
(参考)Sakana AI
Sakana AI社
https://gyazo.com/4301709ebd76ca521def39f23fc6c327
2023年に設立したスタートアップ企業
「Sakana AIは、小さな個々の魚が大きな群れを形成する中で優れた行動判断を行っていくような自然界の法則に着想を得て、分散的、自律的、効率的な新しい言語モデルの開発をめざしています」 https://group.ntt/jp/newsrelease/2023/11/13/231113b.html より
いろいろな記事が公開
『進化的アルゴリズムによる基盤モデルの構築』(2024/3/21)
https://sakana.ai/evolutionary-model-merge-jp/
『「AIサイエンティスト」: AIが自ら研究する時代へ』
https://sakana.ai/ai-scientist-jp/