ディープラーニング
ディープラーニングとはニューラルネットワークに隠れ層(中間層)を増やしたものです。
入力から出力までの間の層が増えたものがディープラーニングと呼ばれます。
ニューラルネットワークでは基本的に中間層や出力層の後に活性化関数を利用して表現力を高めます。
また、、パラメータの初期値であるハイパーパラメータ(重みやバイアスの初期値など)を人が設定していましたが、最近では自動でも設定可能になってきています。
層を深くしていくとニューラルネットワーク内ではどのパラメータを調整していいのかが判断できなくなり、その問題をを信用割当問題といいます。
この問題は誤差逆伝播法で解決できます。
隠れ層を増やすことでモデルの表現力は上がりますが、層を増やすと誤差逆伝播法の誤差が入力側に正しくフィードバックされなくなり、その問題を勾配消失問題といいます。
残差ブロックを導入して勾配消失問題に対処する方法をDeep Residual
Learningといいます。
ニューラルネットワークでは、関数を近似する万能近似定理があります。
ディープラーニングのアプローチ
2006年にジェフリー・ヒントンが積層オートエンコーダと深層信念ネットワークを提唱しています。
-
オートエンコーダ(自己符号化器)
エンコーダーとデコーダーで構成されており、入力されたデータをエンコードして小さくした滞在変数zを作成して、小さくした滞在変数zからデコーダーが入力したときと同じにものになるように学習します。
可視層と隠れ層の2つのネットワーク構成で次元削減が行えるニューラルネットワークになっています。
入力層の次元よりも隠れ層の次元を小さくすることで入力された情報を圧縮して、入力層から隠れ層の処理をエンコードといいます。
隠れ層から出力層の処理をデコードといいます。
オートエンコーダには、CAE,VAE,CVAE,VQ-VAEがあります。
VAEではエンコーダーで小さくするときに確率分布を使用して潜在変数zを作ります。
VAEはリパラメタリゼーショントリックを使用します。
VQ処理後、勾配エンコーダの出力をコピーする形でエンコーダに逆伝播されます。
-
積層オートエンコーダ
ニューラルネットワークのオートエンコーダで層を積み重ねたネットワークです。
事前学習(教師なしを教師ありの前に行うこと)とファインチューニングの二つの工程で構成されています。 -
深層信念ネットワーク
事前学習とファインチューニングの二つの工程で構成しております。
事前学習に制限付きボルツマンマシンを使用しています。
ディープラーニングを実現するには
ディープラーニングを実現するのも機械学習の流れと同じです。
データを集めて学習モデルを構築して学習モデルを評価していきます。
ディープラーニングは層が多くなり、計算が大量に必要になります。
ディープラーニングが実現できるようになってきたのはコンピュータの進化によるものです。
第2次AIブームもそうですが、CPUの処理性能が向上並びにグラフィックを処理するGPUでディープラーニングの行列演算が大量に行えることができたためです。
グラフィック処理以外の目的をしたものをGPGPU(General-Purpose Computing on
GPU)といいます。
GPGPUはNIVIDIA社が牽引しています。
2017年にNVIDIAと中国のBaiduがAI技術で提携しています。
Googleがテンソル処理に最適化されたTPU(Tensor Processing
Uniti)を開発しています。
TPUはノイマン型プロセッサの1種です。
バーニーおじさんのルールと呼ばれる学習モデルのパラメータが多くなると学習に必要なデータ数が多くなり、パラメータ数は10倍は必要と考えられています。
活性化関数
活性化関数はニューラルネットワークの中間層並びに出力層で使用しますが、使用する活性化関数が変わる場合があります。
中間層で使用する活性化関数は次に渡す必要なデータ(しきい値で信号の強弱)を渡し、出力層で使用する活性化関数では人がわかるような値(比率は維持)となります。
活性化関数は入力層で受け取った内容を重みで調整してバイアスを足して次の層または結果として変換します。
ニューラルネットワークで使用する活性化関数は非線形な関数になり、ネットワークを多層にするため線形ではないです。
活性化関数には以下があります。
-
ステップ関数
線が階段になるようなイメージの階段関数です。
-
シグモイド関数
入力値を「0.0」~「1.0」の範囲で数値に変換してS字で表示されるようなイメージの関数です。
主に2値分類で使用
ニューラルネットワークの学習でパラメータの初期値を設定することは重要で、本関数を使用するときはXavierの初期値が使用されます。
-
ReLU関数
入力値が0以上ならそのまま返し、0未満だと0を返す関数です。
(例:y = max(0,x))
シグモイド関数で勾配消失問題が発生してしまい、それを回避する方法として使用されています。
よく使われる派生形系の一つでLeaky ReLUがあり、入力が負の値であっても勾配が発生します。
Leaky ReLUの負には「α」(通常は0.01)がかけられます。
ReLU関数を用いる場合はHeの初期値が使用されます。
-
tanh関数
入力値を「-1.0」~「1.0」の範囲で数値に変換するシグモイド関数に似た関数です。
tanh関数はシグモイド関数と違う点として原点対称が上がられます。
-
ソフトマックス関数
複数の出力値の合計を「1.0」になるように変換する関数です。
2値以上の多クラス分類で使用します。
入力の差に影響します。 -
恒等関数
何も変化を与えない関数です。
f(x) = xのように定義します。
学習の最適化
学習時に学習するデータが多いと時間が掛かりますので、既に学習済みのものを利用して学習の時間を削減させることをプリトレーニング(事前学習)といいます。
また、学習されたモデルに他のデータセットを使用して学習させることを再学習といいいます。
学習の最適化には、転移学習とファインチューニングがあり、転移学習では学習させたモデルを他のモデルに適用させます。
これは、既存モデル(事前学習)で学習した部分から追加で学習させて変更する部分のみ(出力層を再学習)パラメータを調整します。
ファインチューニングでは、既存モデルの一部を利用して新しいモデルを作成します。
これは、既存モデル(事前学習)で学習した部分から追加で学習させたもの以外の部分も学習してパラメータを調整します。
既存モデルの学習率は低く設定することが多いです。
教師なし学習で訓練して、ソフトマックス関数などを追加して教師あり学習を行い全体の重みを調整するなどがあります。
転移学習やファインチューニングは、訓練用画像が十分に集まらないときに既存モデル(事前学習済み)を利用することで入力層に近い中間層ではタスクごとに比較的に大きな差が発生しません。
転移学習は、データが少ない状況で適切にAIモデルを作成するため方法です
。
データセットに含まれる情報を直観や先入観によって削除することを除外バイアスといいいます。
学習を最適化する方法として、学習モデルが評価・予測した内容と結果の誤差を最小化してパラメータを更新することです。
目的関数を定義して、その関数の誤差が最小になるように勾配を求める必要があるため微分が必要です。
誤差を数学では誤差関数(損失関数)として定義でき、誤差を最小化できます。
回帰の問題では平均二乗誤差を分類問題では誤差関数に交差エントロピーが誤差関数として使用されます。
ディープラーニングでは中間層が多く活性化関数にシグモイド関数を使用してしまうと、シグモイド関数の微分が最大が0.25となり中間層が増えれば増えるほど最適な重みにするための値が小さくなりすぎてしまい重みの更新が行えない勾配消失問題が発生します。
このような勾配消失問題には、活性化関数の変更・ハイパーパラメータの設定・バッチ正規化で改善することがあります。
誤差の勾配で一番低いところを探したいのですが、勾配降下法などでは学習率や手法により見つからない場合があります。
途中で、学習率が小さいと発見したのが最適だと誤ってしまった最小の勾配を局所最適解といい、真の最真解は大域最適解といいます
。
鞍点とは、局所最適解に陥り学習が停滞してしまうことで、停滞している状態をプラトーといいます
。
ニューラルネットワークの損失関数では通常多次元の関数で損失関数上に鞍点が存在してしまいます。
また、学習率が小さいと最適解までの計算量が多くなり収束までに時間が掛かりますが、学習率が大きいと学習速度は向上して収束までの時間を短くできますが、最適解に到達できずに発散してしまうことがあります。
勾配降下法によって学習させたとき、訓練誤差を最小化するためには母集団の誤差の期待値を汎化誤差にします。
勾配降下法の手法(オプティマイザー)には、以下があります。
-
Momentum
慣性を使いよりスピーディーに最適解を探す手法です。
-
AdaGrad
Momentumを組み合わせた手法です。
勾配のアダマール積を蓄積して、勾配の穏やかな斜面から最適解を探索します。
学習率は小さいので何処を探せばいいのかがわからなくなる(ある次元から見れば極大値だが、別の次元から見ると極小値になってしまう点)鞍点問題が発生します。 -
RMSprop
AdaGradの更新量が緩和した重みが更新されなくなる問題を改善しています。
ハイパーパラメータの設定も必要なく、局所最適解ではなく大域最適解が見つけやすい手法です。
勾配すべてを均一にしてパラメータの加算をしないで新しい勾配の情報がパラメータに大きく反映されるように設計しています。 -
AdaDelta
AdaGradを改良した手法です。
勾配すべてを均一にしてパラメータの加算をしないで新しい勾配の情報がパラメータに大きく反映されるように設計しています。 -
Adam
MomentumとRMSPropを組み合わせた手法です。
現時点ではこちらが最適な解を見つけやすいです。 -
AMSGrad
パラメータを最適化するにあたって重要な特定のミニバッチの勾配情報を長期間保持するよう設計された最適化手法で、AdaBoundとAMS Boundは序盤はAdam、終盤はSGDのように振る舞うことで学習率の乱降下を抑える最適手法です 。
バッチ学習
バッチ学習とは学習データを1度に利用する方法で、学習データを複数のグループに分けるミニバッチ学習があります。
データの投入方法にはオンライン学習もあり、それはデータをランダムに1つずつ投入していく方法です。
学習の過程においてパラメータを更新した回数をイテレーションといい、一つの訓練データを何回も繰り返して学習させることエポックといいます。
また、エポック毎にミニバッチの中身を変更するため、目的関数も異なります。
一般的にミニバッチの学習のほうが局所最適解に陥りずらいです。
逐次学習は、サンプリングした一部のデータのみを学習に利用してイテレーション単位で繰り返してエポック数をイテレーションします。
機械学習では、予測時には入手できないはずの情報を誤って訓練データに加えてしまうことをデータリーケージといいます。
更なるテクニック
ディープラーニングで更に制度を上げる方法として入力データを標準化(データの前処理参照)することが考えられます。
標準化することで、個々のデータサイズが小さくても過学習になりずらいです。
また、ニューラルネットワークの最適化としてバッチを正規化があります。
バッチ正規化は各層において活性化関数を掛ける前に伝播してきたデータを正規化する処理です。
バッチ正規化は学習速度を向上し、パラメータの初期値の影響を受けにくくし過学習を抑制できます。
また、学習率を大きくすることでドロップアウトの使用を減らせています。
バッチ正規化は、訓練時とテスト時で処理が異なります。
バッチ正規化以外にもレイヤー正規化・インスタンス正規化などがあります。
バッチ正規化には、オンライン学習では効果がなく、ミニバッチのデータ数が少ないと収束しません。
レイヤー正規化はミニバッチの個々のデータ(単一サンプル)を正規化することでバッチ正規化の問題が改善しています。
各チャネルごとに正規化するインスタンス正規化では、画像のスタイル転送などで使用されています。
再帰型のモデルに適用する場合ではバッチの平均が取れなくなることがありますがレイヤー正規化では適用可能です。
早期終了
早期終了は、訓練時に学習モデルが検証誤差を算出し検証誤差が前よりも小さくならなかったらカウントして所定の値を超えたら学習を終了させます。
ニューラルネットワークでは学習の早期終了は有効であり、多くの場合に学習を続けると検証データに対する誤差が次第に大きくなります。
この影響で、学習モデルが訓練データに過剰適用せずに汎用化が行えて、正則化と同等な効果が見込めます。
また、学習の工程において検証データに対する誤差が増加した後に再び減少してしまうことを二重降下現象といいます。
ドロップアウト
ドロップアウトは過学習の対応の一つで、ニューラルネットワークのニューロンをランダムに消去しながら学習する方法です。
パラメータがあまり使用されていないものが対象となり、ニューロンを消去する割合は定数として与えます。
ドロップアウトはアンサンブル学習と同じ効果を得られます。
データ拡張
データ拡張とは、訓練データを加工複製して学習データを増加させることです。
データ拡張の手法について以下に記載します。
-
Cutout
少ないデータで学習が行えて、類似手法にはRandom Erasingsがあります。
マスクする領域の大きさはどのデータセットでも同一にします。
-
Random Erasings
Cutoutと比べて複雑でランダムな縦横比の長方形領域をランダムな値でマスクします。
-
Mixup
訓練データからカテゴリの異なる2枚の画像を取り出し、それらの画像を合成して新たな訓練データを生成します。
-
CutMix
Cutoutの改良版でとMixupを組み合わせたものです。
ディープラーニングの手法
ディープラーニングの手法には、人工ニューラルネットワーク(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サイズのフィルタを行い画像を畳み込みます
。
プーリング層では平均値や最大値などを用いて入力データをサンプリングします。
畳み込み層と同じような計算ですが、積和計算ではなくフィルタ内の最大や平均などの値を用いて出力します。
平均値や最大値を取ることで入力データが少ない動きも保ったまま出力が行えます。
プーリングでは解像度を下げてデータを軽量化でき、以下があります。
-
最大値(MAX)プーリング
プーリング層で使用して特徴マップにフィルタを適用し、対象領域の最大値を取る演算します。
-
平均値(Average)プーリング
プーリング層で使用して特徴マップにフィルタを適用し、対象領域の平均値を取る演算します。
-
FN
フィルタ数です。
-
FW
フィルタ幅です。
-
C
チャネル数です。
-
エッジ
色が変化する境目です。
-
ブロブ
局所的に塊のある領域です。
-
受容野
ニューロンに変化を乗じさせる局所的な空間領域です。
全結合層では、受け取った次元のつながりがある数値(特徴量)にパラメータ(重みやバイアス)・活性化関数を使用して最終的な出力を行います。
特徴マップを全結合層に移行する方法として以下があります。
-
フラトゥン(Fratten)
特徴マップを全て1列に並び変えます。
-
グローバルマックスプーリング (GMP)
特徴マップからチェネルごとの最大値で1列に並び変えます。
-
グローバルアベレージプーリング (GAP)
全結合層で使用して特徴マップからチェネルごとの平均値で1列に並び変えます。
CNNの初期のモデルには、神経細胞の2つの働きを模範するネオコグニトロンが考えられて誤差逆伝播法ではなくadd-if
silentを使用して学習していました。
その後、ヤン・ルカンによって発表されたLeNetはプーリング層はなく、サブサンプリング層の活性化関数にシグモイド関数を使用して、学習方法には誤差逆伝播法を使用しています。
深層生成モデル
入力したデータの分布をモデル化したモデルを生成モデルといい、生成モデルがディープラーニングでより複雑なデータを生成できるようになったものが深層生成モデルです
。
生成モデルが転置畳み込み(transposed
convolution)でアップサンプリングします。
深層生成モデルでは、入力・出力の分布をモデル化して人口データの生成をしています。
深層生成モデルには2014年にイアン・グッドフェロー発表してたヤン・ルカンが最もいいアイデアといったGANがあります。
GANは、生成ネットワークと識別ネットワークの二つを競い合わせており、尤度ではなく識別器に生成器の良さを評価します。(偽物を生成するネットワークと偽物と本物を識別するネットワークをお互いに競わせながら学習手法)
生成ネットワークはランダムなベクトルを入力として受け取って生成するジェネレータがあります。
目的変数はJSダイバージェンスに対応しており、収束性、モードコラプス、勾配消失などの問題点があります。
識別ネットワークは受け取ったデータが本物かをどうかを判別するディスクリミネータがあります
。
GAN以外の深層生成モデルには変分オートエンコーダ
(VAE)があり、オートエンコーダベースの生成モデルでGANに比べて安定した学習を行えます
。
GANのモデルには以下があります。
-
DCGAN
GANに畳み込みCNNを導入したモデルです。
-
Pix2Pix
白黒画像からカラー画像への変換を行うGANの派生モデルです。
画像への変換ではエッジの画像を条件に生成器、識別器にそれぞれ与えます。
-
CycleGAN
馬の画像をシマウマに変換するなどします。
-
StackGAN
入力されたテキストに基づく画像を生成します。
- LAPGAN
-
Conditional GAN
画像の大域的な情報を捉えて違和感のない画像を生成します。
ラベルも一致させる必要があります。 ジェネレータにもラベルを与える - SNGAN
画像認識分野
ディープラーニングの画像認識への応用事例や代表的なネットワーク構成について記載していきます。
画像認識には画像に何があるかを検出する物体検出とピクセル毎に判別するセグメンテーションがあります
。
一般物体認識として、画像がどの画素に属しているかをセマンティックといいます。
-
セマンティックセグメンテーション
領域分類で、画像単位で切り出してクラスに割り当てます。
ピクセル毎にクラス分類を解き、広い領域を参照するためのダイレクト畳み込み(Dilation convolution)があります。
セマンティックセグメンテーションでCNNを用いるとピクセルが孤立することがあり、条件付き確率場により改善します。
-
インスタンスセグメンテーション
画像単位で切り出してクラスに割り当てるのに加えて個々の物体を認識して物体と判断した画像についてクラスを予測します 。
セマンティックセグメンテーションでは同じ物体があっても区別できないが、区別できるようになっています。
-
パノプティックセグメンテーション
Googleがセマンティックセグメンテーションとインスタンスセグメンテーションを組み合わせたものとして発表されています。
物体検出とは、画像内の対応するクラスの物体の位置を検出するタスクで対応するクラスの物体が含まれる短形領域をバウンディングボックスといいます。
物体の特徴を抽出して、それが何なのか(クラス)を特定します。
バウンディングボックスで対応するクラスのスコアが高いことを非最大値抑制といい、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)をします 。
代表的なネットワーク
-
VGG
3*3の畳み込み層を複数重ねて少ないパラメータで大きなフィルタを使用したモデルです。
深さが16層で畳み込むVGG16があり、プーリング(受容野を広げる)で小さくしたものをアップサンプリングで復元します。 -
GoogleNet
Inceptionモジュールでフィルタサイズの異なる畳み込みを並列に行い勾配消失問題を回避するために補助的な損失につながる分岐機構のモデルです。
猫の検出に成功しています 。 -
ResNet
多層ニューラルネットワークで勾配消失を軽減させるための工夫としてスキップコネクションを導入したモデルです。
スキップ結合で100層を超えています。 -
DenseNet
ResNetの改良系のモデルです。
ショートカットを持っている点は同じですが、特徴マップをチャネル方向に結合します。 DenseBlock(畳み込み層の後にその前の入力のすべてを足すこ)で -
MobileNet
Googleが発表したスマートデバイスなどでも利用できるように軽量なCNNとしてDepthwise Separable Convolutionを使用したモデルです。
空間方向(画像の縦横報告)に畳み込ん(Depthwise Convolution)で2次元のチェネルを別々に畳み込ん(Pointwise Convolution)で計算の効率化をしています。
ハイパーパラメータとしてネットワークの深さ(width muliplier)と解像度(resolution mulitplier)を用います。 -
NASNet
ネットワークの全体構造を探索するのではなくCNNの畳み込みやプーリングをCNNセルと定義し同じセルを繰り返してCNNセルの最適化を行い形成するモデルです。
NAS(Neural Architecture Search)はニューラルネットワークを自動的に最適化する(ハイパーパラメータを自動的に探索)手法でRNNと強化学習を組み合わせたAutoML(機械学習自動化)を実現するための理論です。 -
MnasNet
Googleが発表さしたモバイル用のCNN設計でAutoMLを参考に速度情報を探索アルゴリズムの報酬に組み込むことで速度の制約に対処したモデルです。
予測精度の高いネットワーク構造を探索するだけでなくネットワークの軽量化も行います。
-
EfficientNet
NASによる探索をベースに構築されたモデルです。
depth,width,resolutionのバランスをとっています。 -
FCN(Fully Convolutional Netwok)
セマンティックセグメンテーションを行うモデルです。
セマンティックセグメンテーション(ピクセルで分類分)で、全結合層が存在しないネットワーク構成で逆畳み込み処理をして特徴マップの画像サイズを大きくします 。(アップサンプリング)
入力した画像のサイズが異なっても単一にでき、大きさを揃えて各画素ごとに足し合わせて物体の詳細を検出します。
-
SegNet
セマンティックセグメンテーションを行うモデルです。
エンコーダーによりインプット時よりも画素数が小さくなった画像を逆畳み込みとアップサンプリングで復元します。 -
U-Net
セマンティックセグメンテーションを行うモデルです。
Skipconnectionと呼ばれるエンコーダ一部で取得した画像を特徴マップ(チャンネル方向に結合)にしてます。
-
PSPNet
セマンティックセグメンテーションを行うモデルです。
特にシーン全体の文脈を考慮するようになっています。 -
SENet
ResNetやInceptionと組み合わせたモデルです。
-
WideResNet
畳み込みニューラルネットワークでResNetの改良系でフィルタ数をk倍にしたモデルです。
パラメータを増やす方法を深くではなく広さ(Wide)にして高速化しています。 -
DeepLab
セマンティックセグメンテーションを行うモデルです。
ディープな畳み込みニューラルネットワーク(CNN)を採用しています。 -
Atrous convolution
畳み込み演算の一種で、通常の畳み込みとは異なり、フィルター(カーネル)の間に空いたギャップ(dilation)を持つ特殊な形態の畳み込みです。
物体検知のフレームワーク
-
R-CNN
2段階検出器で、画像内から矩形領域として物体を検出するモデルです。
選択的探索で物体の候補領域を求めます。
物体検出して物体認識(ROI:関心領域)でCNNで畳み込みをしてクラス分けをします。
欠点として、候補領域ごとに特徴抽出が必要なことと選択的探索(Selective Search)の時間が掛かることです。 -
Fast R-CNN
2段階検出器で、画像全体を複数回畳み込み特徴から該当する物体を検出するモデルです。(物体認識が同時に行える)
物体候補領域の特徴マップが一定のサイズになるように物体領域を候補して特徴マップを小領域で分割し、ROIプーリング(最大プーリング)を行います。
ROIプーリングでは荒くなり整数に丸めるので高精度の推定が難しいです。 -
Faster-R-CNN
2段階検出器で、Fast R-CNNを改良してサブネットワークから候補領域を予測して物体を検出するモデルです。
RPNで物体の候補領域を取得して、End-toEndで、VGG16を利用してアンカーボックスを作成します。
物体候補領域の特徴マップが一定のサイズになるように物体領域を候補して特徴マップを小領域で分割し、ROIプーリング(最大プーリング)を行います。 ROIプーリングでは荒くなり整数に丸めるので高精度の推定が難しいです。 -
YOLO(You Only Look Once)
1段階検出器で、物体を検出するモデルです。
Faster-R-CNNを解決するためのFPNがあります。
物体化背景化を判断する信頼度スコアを算出します。
高速な物体検出モデルで、クラス分類やバウンディングボックスの位置や大きさの回帰を行います。 -
SSD(Single Shot Multibox Detector)
1段階検出器で、Faster-R-CNNを解決するためのFPNや発展した物体を検出するモデルです。
CNNの途中で得られる特徴マップを複数用いて物体が存在すると思われる短形領域とそのクラスを出力します。
小さな物体の検出に適しています。 -
Mask R-CNN
2段階検出器で、Faster-R-CNNを拡張(ピクセルの分類を追加)してマルチタスク学習で制度を向上させたモデルです。
バウンディングボックス内の画素単位でクラス分類を行い、物体の形も推定可能です。(インスタンスセグメンテーションが可能)
ROIプーリングの改善としてROIアラインで整数に丸めず推定(領域のずれを軽減)の精度を向上させています。 -
FCOS(Fully Convolutional One-Stage)
アンカーベースのデメリットを回避ししたアンカーフリー(上下左右の距離を回帰)で制度を向上させています。
検出物と背景の不均衡を改善しています。
音声処理と自然言語処理分野
自然言語とは、日本語や英語などの自然に生まれた言語のことです。
自然言語処理には、文書分類、機械翻訳、文書要約、質疑応答、対話などの処理があります。
-
トークン
自然言語を解析するための最小単位です。
-
コーパス
情報がある文書または音声データです。
-
シソーラス
単語を同義や類義などで分類して、体系づけた辞書です。
-
形態素
意味を持つ最小の単位です。
文章の単語を分割するには形態素解析と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にする)を防ぎます。
- 入力ゲート:CECにデータを記憶
- 出力ゲート:CECが記憶しているデータを出力
- 忘却ゲート:CECが保持している過去のデータを忘却
LSTMではパラメータ数が多くなり計算量が多いため、2つのゲート(リセットゲート・更新ゲート)に簡略化されたGRU(Grated
Recurrent Unit)の手法もあります 。
LSTMとGRUでは、通常シグモイド関数が使用されます。
入力する値の数と出力する値の数が異なるときにはCTC(音声認識において入力された音声の数と認識すべき音素数が不一致になることがあるが、空文字を追加して解決)を使用します。
RNN関連の技術を次に記載します。
-
スキップ接続
2つ以上の先の時刻の隠れ層にも接続することをといいます。
-
エコーステートネットワーク
出力の重みのみを学習するので、勾配消失や勾配爆発が発生しなくなります。
-
リーキーユニット(leaky unit)
隠れ層を線形結合でつなぎ、移動平均の効果を得ます。
-
双方向(Bidirectional) RNN
Seq2Seq等の機械翻訳のモデルの仕組みで使用します。
中間層の出力を未来への順伝播と過去への逆伝播の両方向に伝播します。 -
Seq2Seq
2つのネットワーク(RNN Encoder-Decoder)で構成されたモデルです。
Encoderで文の意味を集約(順番に単語を取り込む)して、DecoderでEncoderの隠れ層の部分から文を解釈してが出力します。
教師強制があり、それは前の時刻の出力でなく前の時刻の正解を入力にすることです。 -
HRED/VHRED
Seq2Seqが文だったが単語の意味(文脈)も使用したモデルです。
(HREDは回答のバリエーションがすくなくVHREDはそれにバリエーションを追加) -
n-gram
言語の単位をnで分ける手法です。
Feature-basedアプローチです。
-
Word2Vec
単語をベクトル表現する手法(単語の意味を扱う)でCBOWまたはskip-gramで単語を予測します。
リストアップして番号順に振って、行列を作成します。
Feature-basedアプローチです。
ワンホットベクトルをそのまま使用すると1万単語なら1万個必要でそれを少なくする手法です。(単語の意味は維持) -
Doc2Vec
Word2Vecを応用した単語をベクトル表現する手法です。
Doc2Vecでは単語だけでなく、文や文章全体に対してもベクトル表現を生成できるように拡張されています。 -
Attention
時系列データ(1文の中)からで特に重要な単語を見つける手法です。
Attention機構は、文章を一度にまとめて読み込みます。
※Seq2Seqに長い文章に問題があり、2単語でも100単語でも隠れ層は決まっています。
RNNと合わせて使用するデコーダの計算の際にエンコーダの中間状態を参照できる機構です。
CNNなどでも使用されて、ソフトとハードのアテンションがあります。 -
Self-Attention
RNNを使わずニューラル機械翻訳の新たなモデルです。
リカレントより高速です。
1つの分散表現をkey・Query・Valueに分割します。 -
Source-Target Attention
入力と出力(検索)が異なる場合に入力と出力の関連を求める仕組み Encoder-Decoder Attentionとも呼ばれる 2つの分散表現を使用して、1つをKeyとValueにして残りの1つをQueryにする Query-Key-Value構造
-
Multi-head Attention
Attention keyとvalueはエンコーダ、queryはデコーダから伝わります。
-
Grobal Attention
時間の初期の入力された情報がデコーダまで伝わりずらい問題をエンコーダの対象時刻の隠れ層の出力から重みを計算しています。
-
Transformer
機械翻訳のために提案された計算速度向上のため、RNNを使わずにAttnentionメカニズムを使って並列計算を可能にするモデルです。
位置エンコーディングと呼ばれるネットワーク機構です。
部品として、位置符号化(Positonal Encoding)があります。
OpenAIが開発したGPTの内部で使用され後継としてGPT-2やGPT-3があり画像分野でも使われています。
GPTは、言語モデル(単語や文章を生成するモデル)で事前学習を行い、one shot learningのようなファインチューニングを使用しない学習が可能になりました。 -
Vision Transformer
Transformerの技術を画像処理に応用します。
-
Google Neural Machine Translation(GNMT)
8層のエンコーダ層と8層のデコーダ層からなる深層LSTMで、1層ごとに1個のGPUを割り当てます。 デコーダ側の最下層の出力で最上層の出力のAttensionを使用しています。
重みは非同期で更新されて、ゼロショット学習があります。 -
BERT
Googleが発表した隠された単語の推定と連続して出現した文章か学習するモデルです。
事前学習は、教師なし学習で行い再学習では教師あり学習で行います。
MLMとNSPというタスクにより事前学習を行い、ベンチマークにはGLUEと呼ばれるデータセットを使用
MLMは、マスクされた単語を予測します。
NSPは、次の文章かどうかを予測します。
自然言語を処理するには単語の意味を機械が理解する必要があります。
word2vecはRNNの1種で、エンコードとデコーダで構成されており、単語埋め込みモデル(自然言語の処理の分野で単語の意味をベクトルで表現)で行列を取得する代表的な方法で、分散表現(文字や単語をベクトル君間に埋め込み、その空間上で恬として扱う考え方)として単語間の類似度を計算して、単語の分散では単語埋め込み行列を凝縮します。
単語の表現には分散表現以外にも局所表現があり、それはワンホットベクトル(データを表現する手法で全要素のうちが一つが一で残りの成分が全て0で表現)で、単語とベクトルの関係を1対1で表現したものです。
形態素解析とは、文法的な情報の注記の無い自然言語のテキストデータから、対象言語の文法や、辞書と呼ばれる単語の品詞等の情報から品詞等を判別します。
構文解析とは、文法に基づく分の木構造を構築する技術です。
音声認識モデルには隠れマルコフモデルがあり、、隠れ変数を考慮した状態遷移モデルで、音声認識や音声合成分野で利用します。
-
CBOW
教師あり学習で、入力に周辺単語を与えることで、対象となる1単語の予測します。
-
skip-gram
教師あり学習で、入力にある単語を与えることで、その周辺単語の予測します。
-
BoW(Bag-of-Words)
手元にある文章データから形態素解析を実行し、得られた形態素のの集合を集計します。
-
fastText
word2Vecよりも学習が高速で、単語を構成する部分文字列の情報も加味するため未知語に強いです。
-
ELMo
文脈から意味を演算するモデルです。
-
WaveNet
音声を生成するモデルです。
少ない総数で受容野を広げる特徴があります。
Dilared Causal Convolutionを使用 同時確率分布では、前のすべての時刻ステップにおける音声サンプルのみです。
層が重くなるにつれて間隔をあけます。
拡大度は出力層のほうが大きくなります。 -
HMM
統計的手法により大量のデータを集め多数のコーパスを用意するのが一般的だが、Deepmindのアルゴリズム ResNetは従来に比べて圧倒的に高い質があります。
機械学習の精度を算出るする際、modified n-gram precisionの値の対数加重平均とBPを用いて算出しますが、機械学習の妥当性と流暢性を考慮した安定的な評価が行えます。
深層強化学習分野
深層強化学習では機械が囲碁でチャンピオンに勝ったことが有名ですが、基本的な手法とその応用分野について記載していきます。
囲碁以外でもアメリカのAtari2600に含まれるゲームで人間以上のスコアで攻略できることから大きな話題を読んだDQNがあります。
DQNは強化学習とディープラーニングを組み合わせ価値推定に必要な情報を効率良く得て学習方法に経験再生があり過去に学習したネットワークを現在のネットワークの教師のように扱います
。
DQNが画像データを受け取り出力する行動は低次元の離散値になりますが、実世界のロボットの行動は関節の角度のように連続値で定義されることがおおくこのような場合はパラメータを持った関数でモデル化し、勾配を用いてパラメータを更新することを方策勾配法といいいます。
DQNはパラメータの更新に同じ経験が何度も使えるので計算量を抑止・更新の分散軽減・パラメータの振動を避けることができます。
強化学習は前述の通り、、エージェントが行動に対して報酬を最大化することを目的としており現実世界でロボットに行動・学習を繰り返すことはリスクであり事前になんらかの方法で集めたデータを学習にオフライン強化学習や人間の動作を教示することでロボットに学習させる協働といった手法が研究されています。
環境の状態を事前に学習することを状態表現学習といいます。
エージェントが外部環境から受けっと情報に基づいて方策を更新しエージェントに与える情報を制限したり、全く情報を与えない状態でエージェント自体に報酬を作りださせる手法の研究として内発的報酬といいます。
通常の報酬値に追加の値を加えることで学習制度を向上させることを報酬成形といいます。
通常のロボット制御では既知の経験を強化学習に利用するための取り組みとして残差強化学習があります。
-
DDQN
ディープラーニングを使用したDQNで誤った学習をしてしまうことを防ぐ
-
ディエルリングネットワーク
行動によらず学習ができるように行動価値関数を状態と行動に分割
-
ノイジーネットワーク
ネットワークそのものに学習可能なパラメータと共に外乱を与え、それも含めて学習させていく手法
-
Rainbow
DQNに関して提案されてきた7種類のアルゴリズムを統合
-
SAC
連続値制御の深層強化学習モデル
-
Sim2Real
シミュレーションを用いて方策を学習し、その学習した方策を現実に適用する手法
-
ドメインランダマイゼーション
ランダム化されたプロパティを使用して様々な学習用のシミュレーション環境を作成
深層強化学習を適用する研究として、プレイヤーが同じ盤面でリアルタイムに行動するゲームが進められています。 複数のエージェントの協調・競争によって強化するマルチエージェント強化学習が有効です。
-
OpenAI FIve
2018年にOpenAIによって発表されてLSTMと強化学習アルゴリズムを組合せたもので、2019年にDota2というゲームで世界王者を破って勝利しました。
-
AlphaGo
畳み込みニューラルネットワークでモデル化しています。
モンテカルロ木探索とLSTMを組み合わせた手法です。
最も訪問回数の多いものを採用します。 -
AlphaStar
DeepMind社が開発した画像処理、自然言語処理などの複数の手法を取り入れたネットワークに強化学習を組合せ様々な人工知能技術を巧みに競合させたアルゴリズムが採用され2019年にスタークラフト2というゲームでトッププレーヤーに勝利しました。
-
AlphaGo Zero
その前身と異なり、完全な自己対戦のみによってAlpha Goを上回る強さを実現し、発展しました。
-
AlphaGo Lee
4つ(選択・評価・バックアップ・成長)のモンテカルロ木探索 勝敗期待が選択されて、着手予想確率が工場しました。
モデルの解釈性とその対応
ディープラニングのモデルの解釈性について記載していきます。
モデルの解釈には人が解釈可能なアルゴリズムを採用モデルの出力結果の根拠を探求することです
。
特徴マップがどの領域を特徴として注目しているかを可視化する手法としてCAM(Class
Activation Map)があります 。
また、CAMを拡張したGrad-CAMはSelvarajらによって提案された可視化手法で勾配情報を用い特徴マップの勾配上さえ取り出せばよく畳み込み層を含んでいればどのような構造のネットワークにも適用可能でヒートマップの解像度は入力画像よりも低い画像分類以外でも使われています。
さらにGrad-CAMを拡張したGuided Grad-CAMはGuided
Back-Propagationを使用して縞や輪郭などの特徴がヒートマップに現れピクセル単位での注目領域の可視化が行えます
。
モデルの軽量化
計算リソースが十分ではないエッジデバイス等で学習モデルを活用する方法を記載します。
エッジデバイスとは店舗・工場などの現場に設置されているデバイスです。
エッジデバイス上でAIを動作させることをエッジAIといい、リアルタイム性が高く情報漏洩リスク・通信料が少なくすみます
。
エッジデバイスでは通常のコンピュータに比べてGPUなどの処理が遅いため、モデルを圧縮する必要があります。圧縮する方法として以下があります。
-
Pruning(枝刈り)
ネットワーク中のノードを削除して、一般的に処理後に再学習が必要でネットワークの層の数は変更しません。
ラッソに基づいて刈り取ります。これは精度に影響を与えないノードやエッジなどを刈り計算量を削減します。
-
Quantize(量子化)
重みの桁数を削減し、ネットワーク構造を変更しないモデルが扱うbit数を制限することで計算量を削減します。
64ビットを使用しているなら16ビットにすることで省メモリになり、計算量が削減されます。
活性化を2値化すると勾配が0になる問題が発生しますので、回避のためにストレート・スルー・エスティメータを適用します。
-
Distillation(蒸留)
同程度の性能でパラメータ数の少ない生徒モデルを作成して、ラベルのないデータを学習に用いて生成モデルの学習に教師モデルの予測結果(正解ラベル)を使用します。
生徒モデルがモデルと使用されるため、モデルが小さくなり計算量が削減されます。