実践型AIプログラミング特講#22

実践型AIプログラミング特講#22

いよいよ、皆様にも馴染みのあるであろうディープランニングについてご説明していきたいと考えております。ニューラルネットワークのディープランニングといえばAIソフトウェアにおいて一番の花形で、誰しも一度はマスメディアを介して聞いた事のある単語かと思います。より、専門的な内容に狼狽される方もいらっしゃるかとも思いますが、安心してください、例に漏れずpythonaならばディープランニングを行うためのライブラリというものがあります。なんだか、pythonにひどく肩入れしているかと感じるかもしれませんがソフトウェアのAI学習特化においてpythonに勝るものはないと筆者自身自負しております。前置きが長くなりましたが実際にディープランニングとは何か簡潔にわかりやすく解説しているつもりなので是非一読ください。

また前回の記事をご覧になっていない方はこちらを先にご覧になることを推奨いたします。

ディープラーニング(深層学習)について

「ディープラーニング」または「深層学習(deep learning)』とは、多層構造のニューラルネットワークを用いた機械学習のことです。つまり、これまで学んできた機械学習の一分野です。ディープラーニングは、今大いに注目を集めていますが、何がすごいのでしょうか。

ディープラーニング(深層学習)とは?

ディープラーニングは機械学習の一分野であり、今までの機械学習とまったく違うものというわけではありません。ですから、これまで学んできたことの応用と言うことができます。

なぜ注目されているのか?

ディープラーニングが注目されるきっかけがありました。もちろん、一言で言えば「性能が良いから」ということになりますが、どんなことにも原因と結果があるものです。少し掘り下げてみましょう。そのプレークスルーとなったのは、2012年に開催された画像認識コンテスト「LSVRCImageNete Scale Visual Recognition Competition)」でした。このコンテストは、2010年から毎年行われているもので、大規模画像の認識·分類を行い、その精度を競うものです。そのコンテストでは、ImageNet で公開されている飛行機やピアノなど、さまざまなものが写っている写真データを学習させて、写真に何が写っているかを検出する画像認識コンテストです。このコンテストで、2012年カナダ、トロント大学のジェフリー·ヒントン教授率いるチームが、ディープラーニングを利用して2位のチームを大きく引き離して圧倒的な精度を示し優勝したことがターニングポイントとなりました。翌2013年の大会でも、上位チームにはディープラーニングを利用したものが目立ちました。ちなみに、2014年には Google が優勝しました。ここからわかるように、ほんの数年で、ディープラーニングは物体認識の分野で圧倒的な性能を示すようになりました。その概念や手法は 1980年代からあったのですが、コンピューターが高性能になったことや、ビジネス分野で大きく成功を収めたこともあり、注目を集めるようになりました。

そして、ディープラーニングは、画像分野·音声認識の分野·自然言語処理など、さまざまな分野で活用されはじめ、大きな成果を上げました。それほど、飛び抜けてディープラーニングの精度が良かったのです。ニューラルネットワークというのは、人の神経を模したネットワーク構造のことです。コンピューターに学習能力を持たせることにより、さまざまな問題を解決するためのアプローチができます。そもそも、人間の脳のなかには多数の神経細胞(ニューロン)が存在しています。1つのニューロンは、他の複数のニューロンから信号を受け取り、他のニューロンに対して信号を渡します。脳はこのような信号の流れによって、さまざまな情報を伝達しています。この仕組みをコンピューターで再現したのが、ニューラルネットワークです。

このニューラルネットを3層以上重ねたものを、一般に「ディープ·ニューラル·ネットワーク(DNN)」と呼びます。このDNNを使った機械学習がディープラーニング(深層学習)です。ディープラーニングでは、大量のデータを学習することで、各ニューロン間の接続の重み付けのパラメーターを繰り返し調整します。

 

パーセプトロンについて

ニューラルネットワークを理解するにあたり、パーセプトロンという人工ニューロンを紹介します。このパーセプトロンは、フランク.ローゼンブラットが1957年に考案したものです。比較的単純な仕組みでありながら、現在の機械学習の基礎となっているものです。まずは、入力層と出力層のみの2層からなる、以下のような単純パーセプトロン(simpleperceptron) について考えましょう。

この図では、パーセプトロンは3つの入力x1、x2、x3を入力とし、出力をyとします。そして、各入力値には、0または1の値を与えることにし、出力する値もまた、0または1になるとします。さて、どのようにして入力値を元に、出力を決めたら良いでしょうか。ここでは、話をわかりやすくするために、新しい液晶テレビを買うかどうかについて考えましょう。新しい TVを買う場合に出力yは1となり、買わない場合は0となります。そして、入力には TVを購入しても良いかどうかを判断する要因を与えるものとします。

・今が TV の買い換え時か?(x1)

・TV購入のための資金が十分にあるか? (x2)

・現在、TVが安く買えるセールをしているか?(x3)

どうでしょうか。これらの要素を考慮し、多数決で要素を決めることができます。ただし、この多数決は、平等に1票ずつが与えられるわけではありません。もしも、その人の手元に資金がたくさんあるなら、x2の資金に関する条件は、それほど重要ではないでしょう。また、今使っている TVが故障してしまって、とにかく早く新しいものが欲しい場合には、x1 の条件の比重はかなり大きなものになります。つまり、単純な多数決で購入を判断することはできません。パーセプトロンでも、その点が考慮され、各入力に対する重み (W) というパラメーターを導入しています。それで、x1、x2、x3に対する重みを、W1、W2、W3としたとき、資金が多い人であれば (W1=5、W2=2、 W3=3)と重みを設定するでしょうし、すでに TVが壊れているのであれば (W1=7、W2=2、W3=1)と重みを設それで、TVを購入するかどうかを検討するプログラムは、しきい値を表す値をbとしたとき、次の定するでしょう。以下のように表現できるでしょう。

if (x1 * W1) + (x2 * W2) + (x3 * W3) > b:

# 買う

else:

# 買わない

このように重みやしきい値を変化させることで、意志決定を明確化させることができます。パームプトロンは、いろいろな情報を考慮し、重みを加味した上で、良い決定を下すことができることがわかりました。このパーセプトロンを複雑に組み合わせることができたら、より複雑な判断ができそうだということがわかるのではないでしょうか。先ほど紹介したニューラルネットワークの図に再度注目して見てください。パーセプトロンを複数組み合わせることで、より複雑な判断ができるようになっています。

ディープラーニングは機械学習の一分野

冒頭でも紹介したように、ディープラーニングは機械学習の一分野です。そのため、機械学習でできることがディープラーニングでも可能であり、これを使うことによって、さらに高い精度での問題解決が可能です。

この節のまとめ

・ディープラーニングが注目を集めている

・ディープラーニングは機械学習の一分野でありまったく別の何かではない

・ニューラルネットワークを高度にしたものがディープラーニングである

 

いかがでしたでしょうか。ディープランニングも存外大した事ないなと感じている人が多いのではないでしょうか。そうなんです、プログラミングとは名ばかりで理解する上で頭の良し悪しは関係ありません、学習において必要なのは学習しようとする意思と継続力なのです。ですから、今からプログラミングを学ぼうと考えた方でも遅くはありません。そして、今後IT事業は飛ぶ鳥おとす勢いで進歩し、流れに伴いリソース需要も格段に上がると推測されます。ですから、一度プログミングにかかる知見とその経験があるたったそれだけで社会から求められる人材になることが可能なのです。もし、プログラミングを始めようか始めまいか燻っている方がいらっしゃいましたら一念発起して明日からではなく今日から取り掛かることを強くお勧めします。

プログラミングカテゴリの最新記事