2018年1月11日木曜日

成長するAI脳


機械学習における興味として、将来的に機能性能を向上したくなった場合に、アーキテクチャをどう拡大したらよいのか、という問題がある。これには二つの側面があり、ひとつは単純に処理性能を増やしたいとき。これは簡単で、学習済みのマシンをコピーして複数並べ、前段で負荷分散すればよい。問題はもうひとつの側面で、より知識を増やしたいときにどうするか、だ。

今はあまり問題になっていないが、アーキテクチャが固定でデータをどんどん投入していくだけ、とはならないはずだ。難しいことを考えれば考えるほど、求める結論が多いほど、きめ細かいほど、元データが多いほど、より大きなアーキテクチャが必要になるはずだ、と考えるのが自然だ。そして往々にして、要求は時間と共にエスカレートするものだ。

ノード数や層数を増やして新しく学習し直す、というのなら話は簡単なのだが、これではその度に学習成果がリセットしてしまう。実験ならともかく、実用マシンでこれを行うのは困難だ。そこで、既存の学習結果を残したまま、アーキテクチャを拡張するためにはどうするか、という学問(技術)が生まれ、検討されるようになるだろう。これを考えてみる。

マクロで考えると、これはスケールアップとスケールアウトということになる。前者は、既存の学習マシンにノードを付け加え、結合を弄る、という考え方になる。後者は、既存の学習マシンはそのままに、別の学習マシンを新たに立て、これを結合する、という考え方になる。だが既存のそれのように単純には行くまい。

まず、スケールアップに関して考えると、学習済みの学習マシンに未学習のノードを付け加えることで、既存の知識が消えたり不具合が出たりする可能性がある。これを防ぎ、更に性能を上げるには、どのような構造にしたらよいか。後者は、そもそもAI同士をどう結合したらよいのかが分かっていないし、新たにつなぐマシンはまっさらだから、繋いだ後にどうデータを流したらよいかも分からない。

前者についてはアイデアがあって、既存のノード1つを2つ、3つと増やし、結合先結合元自体は層に応じて増やし、その初期パラメータを既存の学習結果と同じになるように設定する、というものだ。これを少し解説する。

例えば、既存の学習マシンの中間層のノード各々を全て二つに増やす、と考える。そして、全ての結合は既存のノードに準じたつなぎにする。例えば、既存のノードA1の先にノードB1がつながっているとすると、既存のノードはA1ひとつからA1とA2の二つになり、接続先はB1とB2の二つになる。このとき、A1-B1は既存の接続であるが、この他にA1-B2、A2-B1、A2-B2の接続ができる。この際、新たな三つの接続における影響係数を全てゼロにする。

こうすることにより、新たにこのマシンにデータが流されてきたときに出てくる答えは、既存のマシンが出す答えと同じになる。しかしこれは実働フェーズでの話であって、学習フェーズにおいては全てのノードに公平にフィードバックされるから、新たな学習においてはゼロだった係数は変化していく、というものだ。

後者は更に難しい。まず目的が問題だ。同じデータを使って別の種類の結論を出したい、というのであれば、入力は同じで出力は独立している、お互いのマシンは干渉しない、という形態になる。例えば手書き文字認識において、文字を特定するマシンと、その文字を書いた人物を推定するマシンを並べる、というイメージだ。これは比較的簡単な部類になる。

では、こんなものはどうか。診察結果から病名を診断する「医師マシン」において、今までは掛かりつけ医レベルだったものを総合病院レベルにしたい、と考えたとする。つまり、従来は一人の医者(マシン)だったところ、多くの診療科医(マシン)の集団にして、どの診療科が診るかをまず決めて、あるいは最終的にどの診療科医の結論を尊重するかを決めて診断をする、という形に変えたい。その場合はどのようにすればよいのだろう。

既存の(汎用)医者マシンが出す結論(病名)は、病名+確率のリストである。病名毎に診療科を割り当て、診察結果と医者マシンの結論を診療科医マシンに入力する、という形になる。この際、診療科医マシンには他の診療科の病名は入力されない。

こうすると、初期においては診療科医マシンと医者マシンの結論は同じであるが、学習が進むことで診療科医の診断の方が精度が高くなっていく、ということが考えられる。

もちろんこの他にも考えられるアーキテクチャはごまんとあり、用途目的によって使い分けられることになるのだろう。重要なのは学習し直しが発生しないことで、こうすることによって、アーキテクチャが変わった時期から急激に精度が上がっている、などという効果が期待できる。

0 件のコメント:

コメントを投稿

注目の投稿:

超音波モーターの原理によるVR用トレッドミル

  VRにおけるリアリティ問題の一つに、その場で動くのではなく移動する場合、つまり歩いたり走ったりすることが挙げられる。実際にはその場にいるので、歩いたかのように足場を調節してやる必要がある。 これを実現する方法として、すり鉢状の滑りやすい足場を作っておく方法と、トレッドミルを使...

人気の投稿: