2022年12月31日

【薙刀式】局所最適問題とqwerty

分かりやすく局所最適とqwertyの話があったので。
qwerty配列の謎
https://m.youtube.com/watch?v=WqOTiBomg-Y&feature=youtu.be


一応僕は理系で、
この局所最適を局所最適に陥らず、
より最適な解に導く方法の研究のようなことはしていた。

その基本的ないくつかを紹介したい。


まず最も簡単な解法が山登り法。

ある状態から始めて、
ちょっと変動させて、
山を登ったなと思ったらそれを採用する。
以下繰り返し。
寝返りを打っているうちに、落ち着くところに落ち着くイメージ。

qwertyの出来方がまさにそんな感じで、
これは簡単に局所最適に陥りやすい。
お山の大将終わりで、全然巨大にならないわけだ。

それもそうで、初期値依存性があるから。
親ガチャ国ガチャと言われるように、
初期値がへぼいところに生まれてしまったら、
どんなに努力してもそのお山の大将までしか登れない。

もっといい場所に生まれないと、という欠点が、
山登り法にはある。

人生で旅をせよといわれるのはこれで、
お山の大将に収まらずに、
もっと巨大な山脈を知れという話だ。
その上でお山に戻るもよし、移住するもよしだ。

山登り法がなぜポピュラーかというと、
「努力や改良が簡単」だからに尽きるのではないか。
プログラムも簡単に書ける。


山登り法を改良したものが、
多点探索による山登り法だ。

初期値をランダム配置した複数の点(10個とか100個とか)に、
それぞれ山登り法を適用させる。
「複数の子供を全国に生み、
最終的に強くなったやつが優勝」
みたいな聖闘士星矢みたいな話だ。

まあ、ただ、最高峰の山に生まれない確率もあるため、
最善手ではない。
そもそも最高峰がどこにあるかすら、
このやり方ではわからない。
ただ有限時間で探索するには、
複数人で探索するというのは納得できるやり方ではある。


これを改良したのが遺伝アルゴリズム(GA)。

初期値バラバラの場所に生まれさせる。
山登り法で登らせる(進化)。
ローカルチャンピオンは残して、あとは殺す(淘汰)。
残った複数人を、混ぜる(交配)。
別の要素が微妙に入ったローカルチャンピオンの、
次世代たちがまた進化を始める。
こうして何千世代も繰り返すうちに、
一番高い山に登るやつが出てくる、という仕組み。

また、局所最適に陥らせないために、
突然変異といって、たまにランダムで配列を変えてしまうと、
全く別のところにワープさせられるやつが出てくる。

俯瞰してみると、
多点探索が並行して行われ、
交配によっていい部分同士が掛け合わされ、
ダメなやつは淘汰されて計算負荷を下げ、
突然変異によってまだ未到達の場所にたどり着くやつが出るわけ。

手法としては最高な気がするのだが、
実装においては難点がある。

まず交配のアルゴリズムだ。
部分的なものを交換する法則で、
「優れた部分が掛け合わされる」わけではない。
じゃあ、「評価の高い部分と、評価の高い部分を掛け合わせる」
にしても、被ってるところをどうするかがある。

また、そもそも、
「評価」はなんだ、と言う話だ。
キーボードレイアウトを評価するのでメジャーなものは、
KLAだけど、アルペジオ打鍵が評価項目にない、
僕の視点から見れば欠陥だ。
「この配列のこの部分は優秀である」
と示す方程式をどのようにつくるべきか?
という永遠の課題がある。

あるいは突然変異率もだ。
これを多くしたらすぐ死ぬ弱い個体が大量発生するし、
低くしたら突然変異個体が出にくくなる。
局所最適を乗り越えるため、
このようなミュータント個体を、
淘汰させすぎないバランスの、
最適な値を求める方法はない。


つまりGAは、数学的計算がすぐにできない問題に対して、
パラメータ調整を何回かして、
違う地球を何個かつくって、
たまたま生き残ったやつを最強とする、
という場当たりと計算の中間のようなアルゴリズムである。

実際役に立つの?でいうと、
新幹線ののぞみの、カモノハシと呼ばれるやつは、
それで作ったらしい。
人間のデザイナーでは思いつかなかった空力性能があるそうだ。

配列の世界でも、
主に月配列でGAは使われて、
いくつか完成されたものがある。

幸花配列が有名だけど、
その後これは名作と呼ばれているかというと、
どうなんでしょ。


この山登りによる全体最適は、
何次元空間の問題か?
という、そもそもの問題設定の難しさもある。
キーボード配列はせいぜい何百次元だろうか。

現在のディープラーニングでは、
数百万次元から数兆次元の問題を解いているらしい。
しかし「解く」というわけではなく、
ある学習されたものに近いものを合成して出力する、
という程度にしかまだ最適化されていない。
見知らぬ問題を、勝手に解けるわけではない。

AIによる絵師(midjourneyなど)は、
結局「どこかで見た絵の合成」になっているから、
新しい絵は生まれていないよね。


量子コンピュータは、
ノイマン型では解けない問題が解けるそうだが、
そもそも「挙動が確率的に変動するコンピュータ」
でしかないため、
解が一意でなく確率分布するらしい。
これを何万回も計算させて、
優勝したやつを最適と定義するだけのことだそうだ。

つまりまだ人類は、最適化問題を、
ほんとうに最適だと確信する解法を発明していない。



局所最適に陥っているのは、
山登り法でやっているからだ。

多点探索をしていたワープロ時代に、
PC98という寡占が起こり、
Windowsという独占が起こってしまったのが、
qwerty固定の原因だろう。
原因はIBMとMSという外圧だ。
つまり政治家が原因だったんだね。
せっかくのTRONという突然変異は、
外圧で潰されたしな。



山登り法では全体最適には辿り着けない。
多点探索は最低限必要で、
それって、沢山の配列が出来ないと、
評価もできない。

そして評価軸が一つなのも危険だ。
タイプウェルだけで判定するのは危険だし、
KLAだけで評価するのも危険だ。
淘汰圧を高くしすぎると、
オルタナティブに移行する可能性をつぶしてしまう。

あとは、使う人間が、
一旦山を下る覚悟をするしかないんだよね。

お山の大将が本当の男になるには、
武者修行が必要だろう。

qwertyからの一時別居を試すのは、
僕は悪くないと思うんだな。


ただ武者修行は、途中で死ぬ人もいる。
その危険を、お山から出て冒したくない人の方が多いだろう。

でもどうせ、
qwertyのブラインドタッチが出来ない人がほとんどなんだ。
お山に登ってもいないんだから、
さっさと別の山を登ってみたほうが、
面白いんじゃない?
posted by おおおかとしひこ at 13:35| Comment(0) | TrackBack(0) | カタナ式 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック