#47 〜AIってなに?〜 1.深層学習の種類

icon はしまさ was written at May 20, 2019 10:15 PM ( icon はしまさ was updated at May 20, 2019 11:57 PM <History> )
  Edit(Sign in)
  Stock
  Answer survey

  TOC

そもそも『AI』とは何か?

最近、よく耳にする言葉として、『AI』というものがあります。
"Artificial Intelligence" の頭文字であり、直訳して人工知能と呼ばれたりしています。
人間により近い存在として、『強いAI』と呼ばれることもあるようですが、
現状、実際はまだ『弱いAI』しか存在していないのかもしれません。

それでは、結局のところ『AI』とはなんなのでしょうか?

『AI』を実現する一つの手法、『深層学習』

現時点の『AI』というと、それはほぼ『深層学習』というものにたどり着きそうです。
人間の脳を表現したとされる『ニューラルネットワーク』に対して、
大量のデータを投入することで、学習を行っていきます。

(画像をあとで貼ります)

まだまだ『弱いAI』かもしれませんが、今後も『AI』の基礎となっていくことは間違えなさそうです。
今回はその深層学習について、基本的な手法を紹介していきます。


1.深層学習の種類

その前に機械学習について分類のおさらい

『AI』だの『深層学習』だの言っても、結局のところは機械学習の一つに過ぎません。
(機械学習を行わない『AI』が今後出てくる可能性もゼロではないですが……いや、ゼロかな???)

機械学習は深層学習以前より使われていたものですが、まずはその基本的な分類について抑えておきましょう。

  • 教師あり学習
  • 教師なし学習
  • 強化学習

学習を行う際、『教師データ』と呼ばれる、そのデータの『答え』となる正解データを使用するか否かで、
『教師あり学習』と『教師なし学習』とで分かれます。
一般的に多い手法は、ヒントと答えを同時に与える『教師あり学習』ですが、
検索などで使用されるサジェスト機能などでは、『教師なし学習』が用いられています。

『強化学習』は、ゲームのCPU対戦を思い浮かべると理解しやすいと思います。
具体的な手法は後述するとして、『Alpha Go』等で騒がれている話題の『強化学習』も、
その基本的な考え方は深層学習以前からありました。

それを『深層学習』に当てはめていくと……

上述の分類を深層学習に当てはめると、下記のようになります。

  • 教師あり学習
    • CNN
    • RNN
  • 教師なし学習
    • AutoEncoder
  • 強化学習
    • DQN

もちろん上に挙げたものはその一例に過ぎませんが、
現在の深層学習はおよそこれらに分類できるもの、もしくはそれを発展させたものと言えそうです。

深層学習を学ぶはじめの一歩として、上述の手法を一つ一つ抑えていきましょう。


2.教師あり学習

CNN

CNNは "Convolutional Neural Network" の略で、画像認識で最もよく使用される深層学習の技法です。

#42 の記事で紹介されている、MNIST もこの CNN が使用されています。

(画像を後ではります)

入力層にデータを投入される際、下記のような処理が行われます。

  1. 入力層に入力値を投入する
  2. ネットワークを伝って、入力値と隠れ層の値(重み・バイアス)を掛け合わせる(順伝播)
  3. 入力値が出力層までたどり着いた後、正解データと比較する
  4. 正解データとの差分から、隠れ層の値(重み・バイアス)を更新する(逆伝播)
    ~以下、繰り返し~

出力層に出力された値と正解データを比較して、その差分から隠れ層を更新する手順は
教師あり学習の基本的な手法となっています。
これを何度も繰り返すことで、隠れ層の値が理想的な値へと更新されていきます。

RNN

RNN は "Recurrent Neural Network" の略です。
主に自然言語処理でよく利用される手法ですが、そのほかの場面でも使用されるケースがあります。
時系列データを処理できることがその特徴です。
CNN の入力データが必ず固定長だったのに対し、RNN では可変長のデータを取り扱うことができます。
(故に自然言語処理でよく利用されます)

(画像を後ではります)

上の図のとおり、イメージとしては CNN を縦にして、横にずらっと並べたような形です。
隠れ層の値を時系列ごとに更新していくのが、その特徴となっています。


3.教師なし学習

AutoEncoder

AutoEncoder は、下記の二つの構成部位から成り立っています。

  • Encoder : 入力データを圧縮して特徴表現として出力する
  • Decoder : 特徴表現を入力値として元のデータへ再現する

上述のとおり、正解データが不要となり、これが教師なし学習の特徴となります。
AutoEncoder は異常検知などで使用されることが多いようです。

(画像を後ではります)

入力データを AutoEncoder に通し、Decorder部の出力層に出力された値と入力データを比較して
その差分から、Encoder、及び Decoder の隠れ層の値を更新していきます。
出力結果との差分から隠れ層を更新していく流れは、教師あり学習と同様ですね。


4.強化学習

DQN

DQN は "Deep Q-Network" の略です。※間違っても『ドキュン』ではありません!
強化学習の手法として普及していた『Q学習』に、深層学習の要素を取り入れたものです。

(画像を後ではります)

Q学習は『今ある状態で、どういう行動をとれば、報酬を得られるか』というのを
求めながら進めていく手法です。
五目並べなどを思い浮かべると想像しやすいと思います。

  • 『五目並べに勝った』=報酬を得られる
  • 『五目並べに負けた』=報酬を得られず

上述の方法でコンピュータ同士で繰り返し対戦を行うと、AIの自律学習が可能となるわけです。
うまく使いこなせれば、データを与えなくても、AIが勝手に学習を行うことができるわけで、
夢のようなお話が始まりそうですね。


さて、どこからはじめよう?

まずは CNN を始めてみるのが一番だと思います。
『考えること』よりも、まず『手を動かしてみること』が大切かもしれませんね。

 Attach Files     - [0]


 Add Comment