TechFULの中の人

triple-four’s blog

はじめての人工知能 

はじめまして!TechFULで問題制作のアルバイトをしているあたかです。

この記事では人工知能に興味はあるけどまだ勉強し始めたばかりの人へ向けて人工知能の研究に使われている基礎技術の一つであるパーセプトロンについて紹介したいと思います。


はじめに

最近なにかと話題になるAI (Artifitial Intelligence : 人工知能)ですが、映画「2001年宇宙の旅」のように人工知能が人間の能力を超えた結果、人間に害を及ぼしたり制御不可能になって暴走するのではないかと恐れる人もいるようです。しかし、人工知能の中身を少しでも知ればこのようなことは杞憂だと考えるようになると思います。 たしかに囲碁や将棋などのボードゲームや画像認識といったような限られた分野ではすでに人間の世界のトップを凌駕する実力がありますが、まだ全ての能力で人間を超えるような汎用的な人工知能を実現するほどの技術レベルまでは到達していません。

実は人工知能はいままで何度かブームがありました。 しかし当時のコンピュータが今ほど高性能でなかったことや、画期的な技術がまだ発見されていなかったことから人間の過剰な期待に応えきれず、徐々に下火になっていきました。 今回のブームの火つけ役はズバリいうと、ディープラーニングです。 ILSVRCという画像認識の精度を競うコンテストで2012年にディープラーニングを用いた手法が前年よりも大幅に正答率をあげ、その後2015年に人間をこえました。

今回はパーセプトロンについて中心に解説し、ディープラーニングまでの流れを軽く説明します。


パーセプトロンとは?

概要

 今回の人工知能ブームの主役であるディープラーニングのもととなる技術がニューラルネットワークです。 ニューラルネットワークは複数のパーセプトロンによって構成されています。パーセプトロンとは脳の神経細胞をモデル化したもので、図のような複数の入力に対し、一定の値を出力する関数です。入力に重みをつけた和が閾値を超えると値を出力します。閾値を調節するためにバイアスTも与えます。 このような入力層と出力層だけのものは単純パーセプトロンと呼ばれます。

f:id:sanbaiefforts:20180928111845g:plain

数式で表すと以下のようになります。 {} $$ z =f( \sum_{i=1}^{k} (x_iw_i) - T) $$

活性化関数

閾値を超えるか超えないかによって出力を変えるために、活性化関数を使います。 様々な種類の活性化関数がありますが、単純パーセプトロンでは活性化関数としてステップ関数をもちいます。 ステップ関数とは以下のように表される関数です。 {} $$ f(x) = \left\{ \begin{array}{} 0 & ( x \leq T) \\ 1 & ( x > T) \end{array} \right. $$ f:id:sanbaiefforts:20180928112534g:plain

具体例

重みとバイアスを調節することで、例えばAND回路のような論理関数を近似できます。 f:id:sanbaiefforts:20180928185030p:plain {} $$ w_0 = 0.2,\
w_1 = 0.2,\
T = 0.3\
$$ とすれば

$$ (x_0, x_1)=(0,0)\ →\ 0 * 0.2+0 * 0.2 \leq 0.3\ then\ 0\  $$ $$ (x_0, x_1)=(0,1)\ →\ 0 * 0.2+1 * 0.2 \leq 0.3\ then\ 0\  $$ $$ (x_0, x_1)=(1,0)\ →\ 1 * 0.2+0 * 0.2 \leq 0.3\ then\ 0\  $$ $$ (x_0, x_1)=(1,1)\ →\ 1 * 0.2 + 1 * 0.2 > 0.3\ then\ 1\  $$

となり正しく出力されることがわかります。 今回は手動で重みとバイアスを調節しましたが、コンピュータに計算させて自動調節することを機械学習といいます。 さきに何をどう分類すればいいかわかっているときは、正しい入出力のペアを教師データとして用意しておき、正しい出力と現在の出力の誤差が小さくなるように重みを調節すれば最終的に正しい重みとバイアスが得られます。 これを学習するといいます。 このようにパーセプトロンでうまく近似できる関数もあったのですが、じつは線形分離不可能な場合は近似できないという致命的な欠陥がありました。

線形分離可能であるとはANDのように直線で分けられることです。 図は二次元平面上に入出力のペアをプロットしたものです。同じ色の点は同じ組に分けられることを示します。

f:id:sanbaiefforts:20180928195732p:plain

つぎのようなXOR(eXeclusive OR)という関数は線形分離不可能であることがわかっています。

f:id:sanbaiefforts:20180928195358p:plain

f:id:sanbaiefforts:20180928195532p:plain

多層パーセプトロン

線形分離不可能な関数でも入力層と出力層の間に中間層をくわえて層を増やすことによって学習することができます。単純な解決策のように思われるかもしれませんが、中間層をいれた場合どのようにパラメータを調節すればいいのかというアルゴリズムは解明されてませんでした。しかし、1986年に誤差伝播法という手法が発明され、多層パーセプトロンも学習できるようになりました。

ディープラーニング

ディープラーニングが発明されたのもじつは同じよう流れです。 中間層をもっと増やせばもっとすごいものができるのではないかと誰もが考えつきましたが、層がさらに増えたことでパラメータの数と計算量が膨大になり、調整することが困難な課題とされてきました。しかし、行列計算に特化したGPUのようなハードウェアの発達や学習方法の様々な工夫によって層が深くなっても学習することが可能になりました。それ以降ははじめにでも述べたように画像認識の分野でずば抜けた成績をおさめ、それ以外の分野でも応用されるようになるのでした。

おわりに

最後までお読みいただきありがとうございます。これをきっかけにニューラルネットワークに興味をもたれた方はぜひ学習を続けて欲しいと思います。 ディープラーニングのためのフレームワークや様々なネット記事や書籍が充実しているので比較的気軽に勉強できる時代にあると思います。