ケータイ用語の基礎知識
![](/img/ktw/subcornerinfo/001/613/keytitle.gif)
第788回:ニューラルネットワーク とは
2017年1月11日 06:00
脳をモデルに「経験から学ぶ」人工知能
「ニューラルネットワーク」とは、人工知能を構築する方法のひとつで、生き物の脳にある神経回路網をモデルにした方式のことです。英語で神経回路網を意味する“neural network”がその名前になっています。
ニューラルネットワークの特徴は、人間の知能をつかさどる「脳」を構造から模することで、その振る舞いを再現しようとするタイプの人工知能であることです。
人工知能の定義はさまざまですが、簡単にいうと「インプットに対して、“人間がするような”アウトプットを行う装置」のことです。装置内部で本当に何かを考えたりする必要はありません。それらしく振る舞うことができればよく、人工知能は、本来は機械内部でも、生き物が行うように「思考する」必要はありません。
そのため、計算機のパワーのない時代の人工知能は、少ない計算で人間のような振る舞いを行おうとさせるものが流行でした。たとえば、こんな入力があればこんな出力をするという、インプットに対するアウトプットの「ルール」を人間が決めておく方法、あるいは確率推論アルゴリズムといった計算式を用意しておき状況から確率を計算しアウトプットを決めるといった方法がその例です。
しかし、このような方法では、人の期待するような人工知能にはなりませんでした。特定の状況下で、人間が行う振る舞いを真似することはできても、違う状況になるとたちまち破綻してしまう。失敗したことを学習しても次に違う状況になると似たような失敗をするなど、「学習が上手にできない」という弱点が出てしまっていたのです。
ニューラルネットワークは、このような問題を解決することができるタイプの人工知能の作り方です。
ニューラルネットワークは、簡単言うと、コンピュータ内でデータとして、インプットが入ってからアウトプットが出てくるまで、その間に重みづけのグラフが構築されていて、「問題」として入力されたデータは、適切なルートを通って「回答」であるアウトプットを出します。ここで言う“重み”とは情報にとってどれだけ重要かを表した数値だと考えるといいでしょう。そしてニューラルネットワークの特徴は、このルートを通る間、情報がグラフ中の経路の重み自体を、さらに軽くしたりあるいは重くしたりと、調整にも使われる点です。
つまりニューラルネットワークは、「経験から学習する」人工知能であることが特徴のひとつです。情報のグラフは今回学習した経路以外にも繋がっていますから、関連する様々なことがらにも波及していきます。つまり、1の事象から、ひとつのことだけを学習するのではなく、一を聞いて十を知るような学習ができるというわけです。
先に紹介したルールを元にする人工知能や、確率を求めるタイプの人工知能では、対象とする問題がどんな特徴をもっているか、ある程度までアルゴリズムによって決めてやる必要がありました。たとえば、確率を求めるタイプの「将棋をさす」人工知能があるとすると、評価関数として相手のどのコマを取った場合どれだけ自分が有利になるかを数値化する、というような部分は人が設計しておく必要があったのです。
しかし、ニューラルネットワークを使う場合、そのような特徴をどうやってつかむかというところまで人工知能に丸投げしてしまうことも可能です。この丸投げする方法のことを「ディープラーニング」「深層学習」などと呼びます。
人工知能には「強い人工知能・弱い人工知能」という言い方があります。汎用性の高い人工知能ほど「強い」、特定の応用・状況での使用にしか向かないものを「弱い」と呼んでいるのですが、ニューラルネットワークは、さまざまな状況に対応できる、これまでより強い人工知能を構築できる可能性をもつタイプの人工知能なのです。
さまざまな人工知能へ
ニューラルネットワークは、ここ数年、人工知能の仕組みとして爆発的に利用が進み始めています。これは、コンピュータの進化がこれまでとは少し変わり始めたことが影響しています。
これまでのコンピュータは複数ある計算を行うときにはひとつの計算を行ったあと次の計算を行う、といったように、スピードを速くしていく方向で進化してきました。ところが近年では、半導体に電気を流すという物理的な仕組みでの限界に近づきつつあるため、スピードではなく並列度を高くする方向で計算機の能力を向上させるアプローチが増えてきました。
ニューラルネットワークは、同時並行に多くの「ニューロン」、つまり脳神経上の構造に模したものが活動しますから、これを再現するのには計算に並行度の高い現在のコンピュータに向いているのです。
そのため、ディープラーニング、あるいは、それ以外の手法を使った機械学習を行う人工知能も、最近では、このニューラルネットワークを使ったものが主流となっているのです。
最近、ニュールラルネットワークを使った人工知能で評判となっている用途には、スマートフォンでも使える「Google翻訳」などがあります。
その名のとおり、外国語を翻訳してくれるアプリなのですが、2016年、ニューラルネットワークの技術を採用して、非常に滑らかな翻訳を実現しました。
Google翻訳では、クラウド上で、翻訳元の言語の単語をベクトルデータに置き換え、そこから別の言語のデータに変換するエンコーダー・デコーダーモデルをニュールラルネットワークで行います。これまではフレーズ単位で確率を計算し翻訳を行っていたのと比べると格段に翻訳精度が上がっています。
Google翻訳のために使われているのは、Googleが開発しオープンソースで提供している「TensorFlow」をベースにしたシステムです。この「TensorFlow」はディープラーニングやそれ以外の手法のニューラルネットワーク構築に利用することができます。