Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

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

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

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

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

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

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

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


1.深層学習の種類

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

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

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

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

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

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

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

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

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


2.教師あり学習

CNN

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

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

  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 を始めてみるのが一番だと思います。 『考えること』よりも、まず『手を動かしてみること』が大切かもしれませんね。