ニューラルネットワークを基本的なことから考えてみる

ノウハウ
Python 人工知能 機械学習 アルゴリズム
ニューラルネットワークを基本的なことから考えてみる

どうも、totokoです。

データ分析の世界に限らず、多くの技術(テクノロジー)の世界では専門用語というのがたくさんあります。

データ分析だと「機械学習」「AI」「深層学習」などなどですね。 僕のコラムではなるべくそういう言葉を多様せずに、噛み砕いた表現を心がけて書いていますが、実際どうでしょうか?

さて、今回はそんなビッグデータ分析の世界において切っても切れない、といいますか、大きなキーワードである「ニューラルネットワーク」についてお話しましょう。

そもそも機械が学ぶとは?

ビッグデータ分析──これは機械(コンピュータ)が、与えられたデータを元に学習し、モデルを作成。その後モデルに対して分析したいデータを与えて結果を出す(機械学習)。機械そのものが何を学習するか、その「学習する事柄」から機械が見出し動作し、分析を行う(深層学習)。 この2種類に分かれるというのは多くの人が知っているでしょう。

では、そもそもの「機械が学習する」というのはどういうことか。

すでにこのテの技術を知っている人からすると、深刻に考えることではないですが、全くの素人や一般人からすると、感情もなにもないはずの機械が勉強するということは一体どういうことなのだ、となるはずです。

例えば僕らは幼い頃から本だったり、実際に見たり食べたりして、リンゴという果物の存在を認識しています。それは実物の写真でも絵でも形式はともあれ、なんとなく「あ、これはリンゴだ」と認識しています。

なので、例えばただの赤い丸だとそれをリンゴとは考えることは難しいでしょうが、そこに一本の線を入れ、葉っぱを書いてやれば「あーリンゴかー」と理解できます。

この学習を実際に機械にやらせていくためのからくりが「ニューラルネットワーク」というものです。

ようするに沢山のパターンの「リンゴ」を知ることで、リンゴのようなものが来てもそれが「リンゴ」であると認識できるようになるのです。 この「知る」というところが機械が学ぶということです。

人間の脳も同じで、すぐに全てを理解できるわけはなく、反復によって理解ができるようになります。そうして、AIが作られるようになるわけですね。

このAIを使って自動運転などの技術に応用されるわけです。これもまたセンサなどから得た情報により、自分(車)の状況などを理解し、最適な運転をしてくれます。

しかし、実際の交通状況では機械が想像しているよりも多くの判断を人間がやっているので、なかなかうまくいかないこともあり、実用化には課題が沢山あるよね、という結論になっているわけです。

だから意図しないことも発生します。以前に僕が書いたコラムに、データによっては意図しない学習結果を出すという話をしましたが、これもニューラルネットワークによるものであるということがわかったと思います。

偏ったデータばかりを学習させたことで、ニューラルネットワークでも偏った学習をしてしまい、結果として偏ったAIになってしまいました。

だから、学習させるデータが大切だよという話です。

2種類の学習

ではその学習の仕組みはどうなっているの? となるでしょう。そこで、畳み込み層とか、アクティベーション層とかいう入出力レイヤーの話になるのですが、正直今回はそういう話はしません。

今回はあくまでも「機械が学習するとは? ニューラルネットワークとは?」の冒頭の部分をお話しようと思っているので。

ですので、最後に「ニューラルネットワークの学習方法」で代表的な2つの学習方法を解説しておしまいにしようと思います。

1:教師あり学習

先程説明した沢山の「リンゴ」のデータをもとに、リンゴの特徴を学習させ、識別させるようにすることを教師あり学習と呼びます。 教科書的な表現で言うと「ラベル(正解)付きのデータで学習させる方法」です。

少ないデータだと、全てのリンゴをリンゴと判断できないかもしれませんが、それが何万、何十万、何百万以上となると、どんなパターン(それこそカーテンの影に隠れたシルエットであっても)でも「リンゴ」と判断してくれることでしょう。

これが、学習のためには大量のデータ(ビッグデータ)が必要と言われる所以です。

このように、もらったデータと正解が1:1で対応しているものを学習するのです。

2:教師なし学習

ありがあれば当然なしもあります。 教師なし学習というのは、教師あり学習の反対です。ようするに、入力するデータがあるのは同じなのですが、解答となるデータがないのです。

答えがないデータを出すことがある種の答えになるとも言えます。

もっと簡単に言うと、予測や推論、分析など正解がないものや、絶対的な正解がない問題で学習させることが教師なし学習と呼ぶのです。

この教師なし学習というのがビジネスには必要となるニューラルネットワークの学習となるでしょう。

ビジネスの場合は絶対的な正解はありません。ありませんが、それの判断となるための情報が必要となるわけです。

そこでデータマイニングなどから、未知のデータの特徴を見つけたり、予測したりするために教師なし学習を利用するのです。

与えられたデータから、「Aタイプ」「Bタイプ」「Cタイプ」……と勝手に分析してくれます。

これは結構大事で、教師あり学習ですとどうしても「解答ありきで考えてしまう」ため、発見することができなかったものを見つけるのが難しくなります。

しかし、教師なし学習ですと、今まで気が付かなかった発見をすることができます。

どっちがいいとかではなく……

この教師あり、なし、どちらが優れているとか劣っているではなく、用途によって使い分ける必要があります。

場合によっては両方を使って学習を行っていくというのもあります。有名な事例に「Googleの猫」があります。

これはYouTubeの動画から、大量の画像データを教師なし学習させることでコンピュータが「猫」を認識するようになったとされます。

これまでの話から考えると、普通ならば猫の正解画像を元に、沢山の猫データを与えて、教師あり学習を行い猫を認識させるのですが、Googleの猫は教師なし学習によって、「猫」という存在をわからせたのです。

その後、教師あり学習を用いて、認識精度を向上させました。「存在として理解した猫」を今度は「これが本当の猫である」とわからせたのです。

そのために正解データをもとに深く勉強(ディープラーニング)させたのです。

まあ、Googleの猫はちょっとめずらしいというか、Googleらしいチャレンジなのでなんともですが、そういう事例もあるので、自分たちが欲しているデータ分析は「教師あり学習」「教師なし学習」どちらがいいのかをちゃんと判断できるようになればいいと思います。

実はもう一つ「強化学習」というのがあるのですが、これはまた別の機会にお話しましょう。

関連するイベント

【初心者:ハンズオン】Pythonで作る簡単レコメンド作成 & 【ディレクション講義】技術にひつような「こころ」の話~ユーザー体験について考える~

【初心者:ハンズオン】Pythonで作る簡単レコメンド作成 & 【ディレクション講義】技術にひつような「こころ」の話~ユーザー体験について考える~

日時
2018/07/14(土) 12:00〜07/16(月) 15:00
会場
阿佐ケ谷アニメストリート 第7区画 SEN STAGE新館(阿佐ヶ谷アニメストリート一番奥の区画になります)
住所
166-0004 東京都杉並区阿佐ケ谷南 2丁目40−1 阿佐ケ谷アニメストリート 第7区画 SEN STAGE新館
主催
Walker Insudtries データサイエンス部