サイトアイコン Stone Washer's Journal

深層学習(ディープラーニング)を素人向けに解説(前編)―基礎となるニューラルネットワークについて

最近、Googleが開発したDQN(Deep Q-Network)と言う日本人からするとユニーク名前の人工知能が話題になりました。これには、ディープラーニング(Deep Learning)と言う人工知能の学習手法が用いられており、同様の手法を用いた人工知能が従来の人工知能の学習能力をあっさり上回ってしまったと世間を騒がせています。

しかし、このディープラーニングというのがいまいちよく理解されていません。非常に有用な手法であり、今後のビジネスに深く関わってくるということもあって専門家向けの解説は多数見受けられるのですが、素人向けの解説があまりありません。

本記事では、プログラミングや人工知能について全く詳しくない素人の方にも分かりやすくい形でご説明していきたいと思います。

関連記事:
ディープラーニングの人工知能は囲碁や将棋やチェスをどんな風に考えて指すのか?
真の人工知能って何?チューリングテストと知能、ディープラーニングは人間を超えるか?

解説の前に、本記事の目的は素人向けに噛み砕いて説明する内容のため、「厳密に言うと違う」という様な部分もございますので、予めご了承下さい。

ディープラーニングとニューラルネットワーク

ディープラーニングとは、適切な特徴抽出能力を持つ教師なしニューラルネットワークを多層にして構築したものです。 

などと言われたら、即ページを閉じたくなるでしょう。そもそも、上記の説明でもディープラーニングの説明としては不十分です。今の段階では、「機械が物事を理解するための学習方法」だと考えて下さい。

まず、ディープラーニングを理解するためには、ニューラルネットワークを理解しなければなりません。逆に、ニューラルネットワークを理解してしまえば、ディープラーニングの概要自体はかなり分かりやすくなります。

ニューラルネットワークと言うのは、人の神経を模したネットワーク構造のことです。それを踏まえて、そう言う構造を持った人工知能のこともそう呼びます。このニューラルネットワークでは、神経細胞を模したパーセプトロンと言う小さな計算機をたくさん用意し、一つの計算を協力して行わせるように作られています。

※厳密には、神経細胞を模したものは「人工ニューロン」であり、それに入力層(input)と出力層(output)を合わせて構成される装置がパーセプトロンとなります。

(神経細胞_Wikipedia

  (パーセプトロン概念図)

上が神経細胞で、下がパーセプトロン。人工知能の持つ神経細胞みたいなものですね。上図のパーセプトロンは左から3本、右に一本矢印が伸びていますが、実際にはもっと沢山矢印が伸びると考えて下さい。

そして、ニューラルネットワークと言うのは、それを大量に集めて作られた下図のようなネットワークのことです。

(プルキンエ細胞の図―神経細胞の一種)


(単純化したニューラルネットワークの概念図)

実際の神経細胞は、信じられない数の枝があちこちに伸びながら複雑に絡み合っています。ニューラルネットワークも実際に使われている規模になってくると、実際の神経細胞並みに複雑な枝があちこちに伸び、ちょっと見ただけでは分からないほど複雑になってしまします。

ただ、上図だけではニューラルネットワークの肝となる仕組みは理解できません。人の神経細胞の最大の特徴は一つ一つの神経の繋がりの強さが自在にコントロールされているという点にあり、この繋がりの強さを目的に合わせてコントロールすることで、効率的な計算ができるようになっています。

複雑に絡み合う道路が目的や場所に合わせて広さが違うのと同様に、神経もよく使う神経は太くなるように作られています。言い換えると、「重要な繋がり」と「補助的な繋がり」を理解できることがニューラルネットワークの最大の特徴であるとも言えます。

ニューラルネットワークの計算はどうやる?

なんとなくどんなシステムなのかは感覚的に理解できたと思いますが、もう少し具体的に掘り下げて理解してみましょう。

ディープラーニングを理解する際に「写真の識別」が具体例に出されることが多いのですが、耳の形や模様の話を出すのは抽象的過ぎるので、ここでははっきりと違いの分かりやすい「種族の識別」を具体例にしてみようと思います。

例えば、上図のようなパーセプトロンで「哺乳類判別知能」を作ったとします。

 一番右側のパーセプトロンは、4つの情報から哺乳類かどうかを判別する(output)ようになっています。そこで、4つの受け取る情報が「恒温動物かどうか」「肺呼吸をするかどうか」「卵を生むかどうか」「足があるかないか」だったとしましょう。

哺乳類は、恒温動物で、肺呼吸で、卵を生まず、多くの場合足があります。そこで、それに一致する場合だけ点数を入れるようにしました。

基準1: 恒温動物1点 肺呼吸1点 胎生(非卵生)1点 足1点 → 合格点4点

まず、一つ一つの情報の繋がりを全く意識しない場合、全て一致した場合だけ哺乳類だと考えるはずです。つまり、「恒温動物である(1点)」「肺呼吸である(1点)」「卵を生む(0点)」「足がある(1点)」と言う情報が来た際に、機械は「哺乳類ではない(4点未満)」と回答します。しかし、「恒温動物である(1点)」「肺呼吸である(1点)」「卵を生まない(1点)」「足がない(0点)」と言うような情報が来た場合、機械はルールに沿って「哺乳類ではない(4点未満)」と回答するのです。

クジラ: 恒温動物1点+肺呼吸1点+非卵生1点+四足動物0点= 3点 非哺乳類

この動物はクジラなのですが、哺乳類の大半が足があるので、機械は哺乳類ではないと判定してしまいました。これは失敗です。

では、仮に合格点を3点としてしまうと、「恒温動物(1)・肺呼吸(1)・卵を生む(0)・脚がある(1)」となった場合に鳥なのに哺乳類だと判定してしまうのです。

そこで、点数配分を以下のように変更します。

基準2: 恒温動物2点 肺呼吸1点 非卵生3点 足1点 → 合格点5点

クジラ: 恒温動物2点肺呼吸1点非卵生3点+四足動物0点=6点 哺乳類

すると、「恒温動物(2)で卵を生まない(3)」と言う情報が分かった時点で、哺乳類だと判別されます。ただし、仮に肺呼吸(1)で卵を生まない(3)足のある生き物(1)なのに、恒温動物ではない(0)と言う情報が来た場合、これも哺乳類と判定します。

生物1: 恒温動物0点+肺呼吸1点非卵生3点四足動物1点=5点 哺乳類

生物2: 恒温動物2点+肺呼吸0点+非卵生3点+四足動物0点=5点 哺乳類

生物3: 恒温動物0点+肺呼吸0点+非卵生3点+四足動物0点=3点 非哺乳類

おや、と思うかも知れませんが、生物1のように「変温動物で卵を生まない足のある生き物」はいません。「恒温動物ではない」と言う情報は、エラーによって生じたと判断されます。同様に、生物2のように「恒温動物(2)で卵を生まない(3)」のに、「肺呼吸ではない(0)」というのも、肺呼吸の情報が誤情報であると考えられます。

しかし、生物3のように、「卵を生まない」のに、「恒温動物でも肺呼吸でもなくて足もない」と言う情報が来た場合、「卵を生まない」のが誤情報であるか、もしくは動物類ではない可能性が高まります。

(追記: 卵生の哺乳類もいますが、「母乳で育てるかどうか」の情報が欠けているので、このパーセプトロンではそこまで正確な識別はできません)

このように、一つ一つの情報に優先度の割り振りを行うことによって、幅広い判断が行われるようになります。とは言え、この程度の優先度を付けた計算であればニューラルネットワークじゃなくても普通の計算装置で行えます

ニューラルネットワークにおいて重要なのは、このパーセプトロンが大量に取り付けられ、優先度設定が使えば使うほどより正確に洗練されていく、ネットワーク化された装置と言う部分なのです。

実際のニューラルネットワークでは、誤情報と思しきデータが発生した場合、これ以外にも存在する別のパーセプトロンの判断を使って総合的に判断するようになっています。そこで、あまりにも誤情報が多ければ、そこからくるデータの優先度は下がりますし、正確と思しきデータが送られてくる繋がりは優先的に高いポイントで判断するようになります。

今回の例で言えば、「恒温動物かどうか」の判定を行うパーセプトロンがさらに上層に存在していて、それもまたさらに上層から送られてくる情報を踏まえて判定を行っています。一つ一つのパーセプトロン同士がお互いの情報に優先度をつけているため、優先度設定が適切であれば、全体の情報も正確になるのですね。

後編へ続く

 

参考資料:
ニューラルネットワークと深層学習(http://nnadl-ja.github.io/nnadl_site_ja/index.html)
はじめるDeep learning(http://qiita.com/icoxfog417/items/65e800c3a2094457c3a0)

 

PR:人工知能をまとめて解説!

(Amazon.com)

モバイルバージョンを終了