ディープラーニング

ディープラーニングとはニューラルネットワークに隠れ層(中間層)を増やしたものです。
入力から出力までの間の層が増えたものがディープラーニングと呼ばれます。
ニューラルネットワークでは基本的に中間層や出力層の後に活性化関数を利用して表現力を高めます。
また、、パラメータの初期値であるハイパーパラメータ(重みやバイアスの初期値など)を人が設定していましたが、最近では自動でも設定可能になってきています。
層を深くしていくとニューラルネットワーク内ではどのパラメータを調整していいのかが判断できなくなり、その問題をを信用割当問題といいます。
この問題は誤差逆伝播法で解決できます。
隠れ層を増やすことでモデルの表現力は上がりますが、層を増やすと誤差逆伝播法の誤差が入力側に正しくフィードバックされなくなり、その問題を勾配消失問題といいます。
残差ブロックを導入して勾配消失問題に対処する方法をDeep Residual Learningといいます。
ニューラルネットワークでは、関数を近似する万能近似定理があります。

ディープラーニングのアプローチ

2006年にジェフリー・ヒントンが積層オートエンコーダと深層信念ネットワークを提唱しています。

ディープラーニングを実現するには

ディープラーニングを実現するのも機械学習の流れと同じです。
データを集めて学習モデルを構築して学習モデルを評価していきます。
ディープラーニングは層が多くなり、計算が大量に必要になります。
ディープラーニングが実現できるようになってきたのはコンピュータの進化によるものです。
第2次AIブームもそうですが、CPUの処理性能が向上並びにグラフィックを処理するGPUでディープラーニングの行列演算が大量に行えることができたためです。
グラフィック処理以外の目的をしたものをGPGPU(General-Purpose Computing on GPU)といいます。
GPGPUはNIVIDIA社が牽引しています。
2017年にNVIDIAと中国のBaiduがAI技術で提携しています。
Googleがテンソル処理に最適化されたTPU(Tensor Processing Uniti)を開発しています。
TPUはノイマン型プロセッサの1種です。
バーニーおじさんのルールと呼ばれる学習モデルのパラメータが多くなると学習に必要なデータ数が多くなり、パラメータ数は10倍は必要と考えられています。

活性化関数

活性化関数はニューラルネットワークの中間層並びに出力層で使用しますが、使用する活性化関数が変わる場合があります。
中間層で使用する活性化関数は次に渡す必要なデータ(しきい値で信号の強弱)を渡し、出力層で使用する活性化関数では人がわかるような値(比率は維持)となります。
活性化関数は入力層で受け取った内容を重みで調整してバイアスを足して次の層または結果として変換します。
ニューラルネットワークで使用する活性化関数は非線形な関数になり、ネットワークを多層にするため線形ではないです。
活性化関数には以下があります。

学習の最適化

学習時に学習するデータが多いと時間が掛かりますので、既に学習済みのものを利用して学習の時間を削減させることをプリトレーニング(事前学習)といいます。
また、学習されたモデルに他のデータセットを使用して学習させることを再学習といいいます。
学習の最適化には、転移学習とファインチューニングがあり、転移学習では学習させたモデルを他のモデルに適用させます。
これは、既存モデル(事前学習)で学習した部分から追加で学習させて変更する部分のみ(出力層を再学習)パラメータを調整します。

ファインチューニングでは、既存モデルの一部を利用して新しいモデルを作成します。
これは、既存モデル(事前学習)で学習した部分から追加で学習させたもの以外の部分も学習してパラメータを調整します。
既存モデルの学習率は低く設定することが多いです。
教師なし学習で訓練して、ソフトマックス関数などを追加して教師あり学習を行い全体の重みを調整するなどがあります。
転移学習やファインチューニングは、訓練用画像が十分に集まらないときに既存モデル(事前学習済み)を利用することで入力層に近い中間層ではタスクごとに比較的に大きな差が発生しません。
転移学習は、データが少ない状況で適切にAIモデルを作成するため方法です 。
データセットに含まれる情報を直観や先入観によって削除することを除外バイアスといいいます。

学習を最適化する方法として、学習モデルが評価・予測した内容と結果の誤差を最小化してパラメータを更新することです。
目的関数を定義して、その関数の誤差が最小になるように勾配を求める必要があるため微分が必要です。
誤差を数学では誤差関数(損失関数)として定義でき、誤差を最小化できます。
回帰の問題では平均二乗誤差を分類問題では誤差関数に交差エントロピーが誤差関数として使用されます。

ディープラーニングでは中間層が多く活性化関数にシグモイド関数を使用してしまうと、シグモイド関数の微分が最大が0.25となり中間層が増えれば増えるほど最適な重みにするための値が小さくなりすぎてしまい重みの更新が行えない勾配消失問題が発生します。
このような勾配消失問題には、活性化関数の変更・ハイパーパラメータの設定・バッチ正規化で改善することがあります。

誤差の勾配で一番低いところを探したいのですが、勾配降下法などでは学習率や手法により見つからない場合があります。
途中で、学習率が小さいと発見したのが最適だと誤ってしまった最小の勾配を局所最適解といい、真の最真解は大域最適解といいます 。
鞍点とは、局所最適解に陥り学習が停滞してしまうことで、停滞している状態をプラトーといいます 。
ニューラルネットワークの損失関数では通常多次元の関数で損失関数上に鞍点が存在してしまいます。
また、学習率が小さいと最適解までの計算量が多くなり収束までに時間が掛かりますが、学習率が大きいと学習速度は向上して収束までの時間を短くできますが、最適解に到達できずに発散してしまうことがあります。
勾配降下法によって学習させたとき、訓練誤差を最小化するためには母集団の誤差の期待値を汎化誤差にします。
勾配降下法の手法(オプティマイザー)には、以下があります。

バッチ学習

バッチ学習とは学習データを1度に利用する方法で、学習データを複数のグループに分けるミニバッチ学習があります。
データの投入方法にはオンライン学習もあり、それはデータをランダムに1つずつ投入していく方法です。
学習の過程においてパラメータを更新した回数をイテレーションといい、一つの訓練データを何回も繰り返して学習させることエポックといいます。
また、エポック毎にミニバッチの中身を変更するため、目的関数も異なります。
一般的にミニバッチの学習のほうが局所最適解に陥りずらいです。
逐次学習は、サンプリングした一部のデータのみを学習に利用してイテレーション単位で繰り返してエポック数をイテレーションします。
機械学習では、予測時には入手できないはずの情報を誤って訓練データに加えてしまうことをデータリーケージといいます。

更なるテクニック

ディープラーニングで更に制度を上げる方法として入力データを標準化(データの前処理参照)することが考えられます。
標準化することで、個々のデータサイズが小さくても過学習になりずらいです。

また、ニューラルネットワークの最適化としてバッチを正規化があります。
バッチ正規化は各層において活性化関数を掛ける前に伝播してきたデータを正規化する処理です。
バッチ正規化は学習速度を向上し、パラメータの初期値の影響を受けにくくし過学習を抑制できます。
また、学習率を大きくすることでドロップアウトの使用を減らせています。
バッチ正規化は、訓練時とテスト時で処理が異なります。
バッチ正規化以外にもレイヤー正規化・インスタンス正規化などがあります。
バッチ正規化には、オンライン学習では効果がなく、ミニバッチのデータ数が少ないと収束しません。
レイヤー正規化はミニバッチの個々のデータ(単一サンプル)を正規化することでバッチ正規化の問題が改善しています。
各チャネルごとに正規化するインスタンス正規化では、画像のスタイル転送などで使用されています。
再帰型のモデルに適用する場合ではバッチの平均が取れなくなることがありますがレイヤー正規化では適用可能です。

早期終了

早期終了は、訓練時に学習モデルが検証誤差を算出し検証誤差が前よりも小さくならなかったらカウントして所定の値を超えたら学習を終了させます。
ニューラルネットワークでは学習の早期終了は有効であり、多くの場合に学習を続けると検証データに対する誤差が次第に大きくなります。
この影響で、学習モデルが訓練データに過剰適用せずに汎用化が行えて、正則化と同等な効果が見込めます。
また、学習の工程において検証データに対する誤差が増加した後に再び減少してしまうことを二重降下現象といいます。

ドロップアウト

ドロップアウトは過学習の対応の一つで、ニューラルネットワークのニューロンをランダムに消去しながら学習する方法です。
パラメータがあまり使用されていないものが対象となり、ニューロンを消去する割合は定数として与えます。
ドロップアウトはアンサンブル学習と同じ効果を得られます。

データ拡張

データ拡張とは、訓練データを加工複製して学習データを増加させることです。
データ拡張の手法について以下に記載します。

ディープラーニングの手法

ディープラーニングの手法には、人工ニューラルネットワーク(ANN)、畳み込みニューラルネットワーク(CNN)、再帰型ニューラルネットワーク(RNN)、深層強化学習があります。
各手法について解説していきます。

畳み込みニューラルネットワーク(CNN)

畳み込みニューラルネットワークは主に画像処理で使用される順伝播型ニューラルネットワークで人間の視覚をヒントに画像を2次元なら2次元のまま入力できるモデルで、畳み込み層とプーリング層の構造を持っています。
1次元・2次元・3次元など次元間のつながりがあれば畳み込み層で畳み込みが行えます。
畳み込み層では、畳み込み(カーネル)として画像なら入力画像の特徴をデータ化したもの(特徴マップ/例:4×4の行列)を左上からフィルタサイズ(重み/例:3×3)で、ウィンドウをスライド(ストライド数が1なら4回実施)しながら積和計算していき画像の特徴を抽出していき、そこから得られた数値を特徴マップ(2×2の行列)として出力(バイアスを付与する場合もあります。)します。
RGBの画像であれば、R,G,Bと3チャンネルのデータを使用します。
畳み込みは局所結合構造(画像であればピクセル同士の関係が重要)で、ゼロパディング(入力画像の特徴をデータ化したデータ周辺を0などで埋める)やストライド(フィルタをスライドさせる幅設定)やチャンネル数(フィルタの数)があります。
畳み込み層は、同じ特徴が1つの入力データに複数発生しない場合に有効です。
サイズを減らす畳み込みにDepthwiseとPointwiseがあります。
Depthwise Convolutionは1チャンネルだけフィルタ数1固定で畳み込みます。
Pointwise Convolutionはチャネル方向に1x1サイズのフィルタを行い画像を畳み込みます 。
プーリング層では平均値や最大値などを用いて入力データをサンプリングします。
畳み込み層と同じような計算ですが、積和計算ではなくフィルタ内の最大や平均などの値を用いて出力します。
平均値や最大値を取ることで入力データが少ない動きも保ったまま出力が行えます。
プーリングでは解像度を下げてデータを軽量化でき、以下があります。

全結合層では、受け取った次元のつながりがある数値(特徴量)にパラメータ(重みやバイアス)・活性化関数を使用して最終的な出力を行います。
特徴マップを全結合層に移行する方法として以下があります。

CNNの初期のモデルには、神経細胞の2つの働きを模範するネオコグニトロンが考えられて誤差逆伝播法ではなくadd-if silentを使用して学習していました。
その後、ヤン・ルカンによって発表されたLeNetはプーリング層はなく、サブサンプリング層の活性化関数にシグモイド関数を使用して、学習方法には誤差逆伝播法を使用しています。

深層生成モデル

入力したデータの分布をモデル化したモデルを生成モデルといい、生成モデルがディープラーニングでより複雑なデータを生成できるようになったものが深層生成モデルです 。
生成モデルが転置畳み込み(transposed convolution)でアップサンプリングします。
深層生成モデルでは、入力・出力の分布をモデル化して人口データの生成をしています。
深層生成モデルには2014年にイアン・グッドフェロー発表してたヤン・ルカンが最もいいアイデアといったGANがあります。 GANは、生成ネットワークと識別ネットワークの二つを競い合わせており、尤度ではなく識別器に生成器の良さを評価します。(偽物を生成するネットワークと偽物と本物を識別するネットワークをお互いに競わせながら学習手法)
生成ネットワークはランダムなベクトルを入力として受け取って生成するジェネレータがあります。
目的変数はJSダイバージェンスに対応しており、収束性、モードコラプス、勾配消失などの問題点があります。
識別ネットワークは受け取ったデータが本物かをどうかを判別するディスクリミネータがあります 。
GAN以外の深層生成モデルには変分オートエンコーダ (VAE)があり、オートエンコーダベースの生成モデルでGANに比べて安定した学習を行えます 。
GANのモデルには以下があります。

画像認識分野

ディープラーニングの画像認識への応用事例や代表的なネットワーク構成について記載していきます。
画像認識には画像に何があるかを検出する物体検出とピクセル毎に判別するセグメンテーションがあります 。
一般物体認識として、画像がどの画素に属しているかをセマンティックといいます。

物体検出とは、画像内の対応するクラスの物体の位置を検出するタスクで対応するクラスの物体が含まれる短形領域をバウンディングボックスといいます。
物体の特徴を抽出して、それが何なのか(クラス)を特定します。
バウンディングボックスで対応するクラスのスコアが高いことを非最大値抑制といい、IoUの指標で評価します。
IoUは、Area of Overlap(TP)/Area of Union(TP+FP+FN)で評価できます。
前述していますが、画像認識分野ではILSVRC(画像認識精度を競う大会)があり、2012年はSuperVisionのAlexNetが優勝しました。
2013年は、AlexNetの改善として、カーネルサイズとストライドを小さくしたZFNetが優勝しています。
2014年にはGoogLeNet(InceptionとGAP)とVGG(オックスフォード大学が提出したモデルで深さを増加させて精度改善)が上位を競っています。
2015年にはMicrosoft社が開発したResNet(Heの初期化)が優勝しています。
2D画像の複数人物の姿勢可視化や画像や動画から3次元で身体の動きなどを検出できるOpen Pose(姿勢推定のための手法)が発表されました。
これは効率的に推定するモデルで、手法の概要として入力画像から部位の推定(Part Affinity Fields)をします 。

代表的なネットワーク

物体検知のフレームワーク

音声処理と自然言語処理分野

自然言語とは、日本語や英語などの自然に生まれた言語のことです。
自然言語処理には、文書分類、機械翻訳、文書要約、質疑応答、対話などの処理があります。

文章の単語を分割するには形態素解析とNgramがあります。
形態素解析は、辞書を利用して意味を持つ最小の単位に分割して品詞などの情報を付与します。
Ngramは、N文字ごとに単語を分けるかN単語ごとに文章を分けます。

単語ごとに切り出すこととして、ユニグラム(1文字または1単語ごとに切り出すこと)、バイグラム(2文字ごとに単語を切り出すこと)、トリグラム(3文字ごとに単語を切り出すこと)があります。

音声と言語の時系列データをモデルで取り扱うためのニューラルネットワークモデルであるRNNについて記載します。
RNNは再帰構造を持つ再帰的なモデルで時系列データを扱うために再帰構造の情報を一時的に記憶することができます。
再帰的なモデルとは、1つ前のリカレント層の状態を次のリカレント層へ伝播することです。
RNNのパラメータの調整する方法としてBackpropagation Through Time(BPTT)があります。 自然言語だけでなく、音声処理にも利用が可能です。

画像・音声・文字などの情報を認識することをパターン認識といい、事前知識や過程で特徴量を選択することをみにくいアヒルの子の定理といいます。
CNNの結果をRNNで入力して画像キャプションを生成することも可能です。
RNNでは勾配消失問題が発生して誤差の逆伝播時に勾配が消えたりと長い時系列を遡るについて学習が困難になりました。
その勾配消失問題を解決するためにLSTM(Long Short-Term Memory)があります 。
LSTMには3つのゲート(入力ゲート・出力ゲート・忘却ゲート)があり、セルと呼ばれるCEC(Constant Error Carousel)は入力層や中間層・誤差を内部に保持するのみの機能で、勾配消失(勾配を1にする)を防ぎます。

LSTMではパラメータ数が多くなり計算量が多いため、2つのゲート(リセットゲート・更新ゲート)に簡略化されたGRU(Grated Recurrent Unit)の手法もあります 。
LSTMとGRUでは、通常シグモイド関数が使用されます。
入力する値の数と出力する値の数が異なるときにはCTC(音声認識において入力された音声の数と認識すべき音素数が不一致になることがあるが、空文字を追加して解決)を使用します。 RNN関連の技術を次に記載します。

自然言語を処理するには単語の意味を機械が理解する必要があります。
word2vecはRNNの1種で、エンコードとデコーダで構成されており、単語埋め込みモデル(自然言語の処理の分野で単語の意味をベクトルで表現)で行列を取得する代表的な方法で、分散表現(文字や単語をベクトル君間に埋め込み、その空間上で恬として扱う考え方)として単語間の類似度を計算して、単語の分散では単語埋め込み行列を凝縮します。
単語の表現には分散表現以外にも局所表現があり、それはワンホットベクトル(データを表現する手法で全要素のうちが一つが一で残りの成分が全て0で表現)で、単語とベクトルの関係を1対1で表現したものです。
形態素解析とは、文法的な情報の注記の無い自然言語のテキストデータから、対象言語の文法や、辞書と呼ばれる単語の品詞等の情報から品詞等を判別します。
構文解析とは、文法に基づく分の木構造を構築する技術です。
音声認識モデルには隠れマルコフモデルがあり、、隠れ変数を考慮した状態遷移モデルで、音声認識や音声合成分野で利用します。

機械学習の精度を算出るする際、modified n-gram precisionの値の対数加重平均とBPを用いて算出しますが、機械学習の妥当性と流暢性を考慮した安定的な評価が行えます。

 深層強化学習分野

深層強化学習では機械が囲碁でチャンピオンに勝ったことが有名ですが、基本的な手法とその応用分野について記載していきます。
囲碁以外でもアメリカのAtari2600に含まれるゲームで人間以上のスコアで攻略できることから大きな話題を読んだDQNがあります。
DQNは強化学習とディープラーニングを組み合わせ価値推定に必要な情報を効率良く得て学習方法に経験再生があり過去に学習したネットワークを現在のネットワークの教師のように扱います 。
DQNが画像データを受け取り出力する行動は低次元の離散値になりますが、実世界のロボットの行動は関節の角度のように連続値で定義されることがおおくこのような場合はパラメータを持った関数でモデル化し、勾配を用いてパラメータを更新することを方策勾配法といいいます。
DQNはパラメータの更新に同じ経験が何度も使えるので計算量を抑止・更新の分散軽減・パラメータの振動を避けることができます。
強化学習は前述の通り、、エージェントが行動に対して報酬を最大化することを目的としており現実世界でロボットに行動・学習を繰り返すことはリスクであり事前になんらかの方法で集めたデータを学習にオフライン強化学習や人間の動作を教示することでロボットに学習させる協働といった手法が研究されています。
環境の状態を事前に学習することを状態表現学習といいます。
エージェントが外部環境から受けっと情報に基づいて方策を更新しエージェントに与える情報を制限したり、全く情報を与えない状態でエージェント自体に報酬を作りださせる手法の研究として内発的報酬といいます。
通常の報酬値に追加の値を加えることで学習制度を向上させることを報酬成形といいます。
通常のロボット制御では既知の経験を強化学習に利用するための取り組みとして残差強化学習があります。

深層強化学習を適用する研究として、プレイヤーが同じ盤面でリアルタイムに行動するゲームが進められています。 複数のエージェントの協調・競争によって強化するマルチエージェント強化学習が有効です。

モデルの解釈性とその対応

ディープラニングのモデルの解釈性について記載していきます。
モデルの解釈には人が解釈可能なアルゴリズムを採用モデルの出力結果の根拠を探求することです 。
特徴マップがどの領域を特徴として注目しているかを可視化する手法としてCAM(Class Activation Map)があります 。
また、CAMを拡張したGrad-CAMはSelvarajらによって提案された可視化手法で勾配情報を用い特徴マップの勾配上さえ取り出せばよく畳み込み層を含んでいればどのような構造のネットワークにも適用可能でヒートマップの解像度は入力画像よりも低い画像分類以外でも使われています。
さらにGrad-CAMを拡張したGuided Grad-CAMはGuided Back-Propagationを使用して縞や輪郭などの特徴がヒートマップに現れピクセル単位での注目領域の可視化が行えます 。

モデルの軽量化

計算リソースが十分ではないエッジデバイス等で学習モデルを活用する方法を記載します。
エッジデバイスとは店舗・工場などの現場に設置されているデバイスです。
エッジデバイス上でAIを動作させることをエッジAIといい、リアルタイム性が高く情報漏洩リスク・通信料が少なくすみます 。
エッジデバイスでは通常のコンピュータに比べてGPUなどの処理が遅いため、モデルを圧縮する必要があります。圧縮する方法として以下があります。