ディープラーニングとは、コンピュータが自ら学習してデータの特徴量を抽出するといったもので、近年のAI進化には欠かせないものとなっています。
ここではまず初めに、ディープラーニングの仕組みや学習手法についてご紹介します。
深層学習(Deep Learning)とは
もともと、ディープラーニングは人間の脳を模倣する形で作られています。もう少し具体的に言うと、人間の脳神経細胞のつくりを参考にしています。
人間の脳神経細胞は、外からの刺激を受け取る入力層、それを処理する中間層、そして処理した結果を体に伝える出力層からなっています。これを参考にし、なおかつより複雑な処理にも適応できるように中間層を多層化します。これがディープラーニングです。
また、脳神経細胞のつくりのことをニューラルネットワーク、そのニューラルネットワークの中間層を増やしたもののことを、DNN(Deep Neural Network)と呼んだりしています。
さらに、DNNを応用したような技術も現在ではいくつか作られています。それについて少し見ていきましょう。
畳み込みニューラルネットワーク(CNN)
畳み込みニューラルネットワークとは、画像認識を行う際によく使われている技術で、入力層と出力層の間にいくつか特有の層を持ちます。
入力層→畳み込み層→プーリング層→全結合層→出力層といった感じです。
では、中間に位置する畳み込み層、プーリング層、全結合層とはそれぞれどのような役割を果たしているのかを確認していきましょう。
まず畳み込み層についてです。畳み込み層では、データの特徴量をとらえやすくするために、あるフィルタを用意し、そのフィルタと画像の一部を重ね合わせます。その作業を画像の全部分に対して順番に行い、それにより得られたデータを特徴マップとして取得します。
その後、求めた特徴マップに対して、プーリング層で決められた演算を行います。これに
より特徴マップのサイズを小さくします。
最後に、データの判別を行うために、先ほどプーリング層によって演算が施されたものを全結合層で一次元にします。これが畳み込みニューラルネットワークの処理の流れです。
リカレントニューラルネットワーク(RNN)
リカレントニューラルネットワークとは、ニューラルネットワーク構造内にループを含むものであり、音声や言語などのデータ入力の順序が肝となってくる処理に適した学習手法です。
他の手法と比べて、ループを用いているため、過去の情報を現在および未来の入力に活用できるといった点があります。
Generative Adversarial Networks(GAN)
GANとは、二つのニューラルネットワークを競わせてデータの学習をさせるといった手法で、それが原因で敵対的生成ネットワークとも呼ばれています。
また、入力データから新たなデータや画像を作るといった機能を有しています。
具体的には、生成器と識別機で構成されており、生成器が新たなデータを作成したのち、識別機がそのデータが本物かどうかを判断します。生成器は識別機をだますような本物に近いデータを作り、識別機はそれを見分けられるように高度なアルゴリズムを用いるようになります。
こうやって二つのニューラルネットワークが競い合いを続けながら学習をしていくといった手法です。
Transformer
Transformerは、上記の三つの手法が生まれた後に作られた学習手法で、Attentionというモデルを用いたネットワークアーキテクチャです。
ここで、Attentionとは、簡単に説明すると、自然言語の文中の単語の意味を理解するためにどの単語に着目すればよいかを求めるための機構のことです。
これを用いることにより、先ほど挙げたRNNよりも高い精度で迅速に自然言語の処理を行うことが出来ます。現在では、機械翻訳などに使われたりしています。
深層学習(Deep Learning)による未来予測の手順
ここまで、深層学習について、いくつかの学習手法を述べてきたのですが、ここから先は深層学習による未来予測について7つの手順に従って紹介していきたいと思います。
データの読み込み
まず、コンピュータによる未来予測を行うために、学習を行わなければなりません。そのため、初めにデータを読み込みます。このデータは90%を学習用に、残りの10%をテスト用に分けておきます。
学習用データの準備
次に、学習用のデータを用いて実際に未来予測するための学習を機械に行ってもらいます。そのために用いるのが、LSTMネットワークです。
LSTMネットワークとは、時系列におけるある一区切りでループ処理を行い、ネットワークの状態更新をすることで、入力されたデータを処理するRNNのことです。ここでは、このネットワークを用いて、前のデータが次のデータを予測する用に学習させます。
LSTMネットワークアーキテクチャの定義
ここでは、LSTMのネットワーク構造を考えていきます。
まず初めに入力データと同じ数の入力層を用意します。次に、128個のユニットを持つLSTM層を用意します。ユニット数は多ければ多いほど正確なデータが得られるのですが、多すぎると過学習につながってしまうため、128個に設定します。
その後、入力データと同じサイズの全結合層を求め、回帰層を組み込みます。
学習オプションの指定
Adam最適化を使って学習を行っていきます。学習の程度としては200エポックとし、すべてのエポックにおいて、データをシャッフルします。
ニューラルネットワークの学習
上記で作成したLSTMと、学習オプションを用いて、学習を行います。
ネットワークのテスト
学習データと同じ手順を踏んで、テストデータの準備を行います。その後、テストデータでの予測を行い、実際に予測とターゲット間の精度を算出します。
未来のタイムステップの予測
未来のタイムストップの予測を行うには、predict And Update Stateといった関数を用いて、各タイムステップにおいて予測を行う必要があります。
深層学習(DeepLearningu)は予測が苦手?
先ほど、ディープラーニングの未来予測の手順を説明しましたが、実は現在、ディープラーニングの欠点として、「人間のように少ない経験から予測が出来ない」といった点があげられています。
確かに、ディープラーニング等の機械学習を用いてAIにそれなりの仕事を覚えてもらうためには大量のデータを学習してもらう必要がありましたよね。人間の場合は、他の経験を活かして、新しいことに挑戦したり、少しの学習を行ってから仕事を行ったりし、後は実務の中で様々なことを経験して成長していくと思います。
しかし、最近ではこれらの問題点を克服するような学習手法が注目されており、その学習手法のことを「メタ学習」と呼んだりします。では、以下でこのメタ学習について見ていきましょう。
メタ学習とは、先ほどのAIには仕事を行う前に大量のデータが必要であるといった問題点を解決するために研究されているもので、一言でいうと、「学習方法を学習すること」です。
これだけだとわかりにくいため、簡単な具体例を用いて考えていきましょう。
例えば、人間が行う勉強について考えます。勉強する際に誰もが自分の学習プロセスを持っていますよね。普段の勉強では、どの教材をどのような方法で学習するのか、見て覚えるのか、書いて覚えるのか、読んで覚えるのか、人によってさまざまだと思いますが、それぞれに合う形の勉強法が決まっていると思います。
わざわざ教科ごとに新しく勉強方法を考えようとか、一日ごとに勉強方法を考えなおそうとか、私たち人間はそういった作業をしないと思います。要するに、仕事一つ一つについてのプロセスを学習しているのではなく、学習プロセスを学習しているためすべての教科に同じような勉強法を適用しているのです。
こちらのほうが効率が良いことは確かです。これを参考にしたものがメタ学習と呼ばれるもので、機械が自身の学習方法を様々なものに応用します。学習能力を高めるために、学習プロセスを学ぶのです。
これにより、学習方法を学ぶことになるため、さまざまな分野での学習が今までよりも効率的に行え、これを実装することで膨大なデータを何回も用意する必要がなくなります。
まとめ
ここまで、主にディープラーニングの予測について述べてきましたが、ディープラーニングに関する理解は深まったでしょうか。
この先まだまだ進化の余地があるAI分野ですので、最新の研究に目が離せませんね。
この記事の執筆・監修者
「BtoB領域の脳と心臓になる」をビジョンに、データを活用したアルゴリズムやソフトウェアの提供を行う株式会社アイディオットの編集部。AI・データを扱うエンジニアや日本を代表する大手企業担当者をカウンターパートにするビジネスサイドのスタッフが記事を執筆・監修。近年、活用が進んでいるAIやDX、カーボンニュートラルなどのトピックを分かりやすく解説します。