ディープラーニング概要
- ディープラーニング
- ILSVRCを契機に2010年代に入って脚光を浴びたが、アルゴリズム自体は1960年代には既に考案されていた。層数を増やすと非常に複雑な関数も近似することができるが、次のような欠点を抱えている。
- 過学習を起こしやすい
- 調整するパラメータ数が多い
- 勾配消失問題が起こる
- また、確定的モデルと確率的モデルに分類される。
- 確定的モデル:深層信念ネットワークのような、多層パーセプトロン系の深層学習
- 確率的モデル:深層ボルツマンマシンのような、ボルツマンマシン系の統計的機械学習
- 勾配降下法
- SGD
- 損失関数の勾配を計算し勾配方向へ学習率に沿って進む手法。次のような応用手法に発展している。
- Momentum:速度と加速度により以前の勾配を残す
- NAG:Nesterov Accelerate Gradient、勾配の更新時に次のステップの近似値を適用する
- AdaGrad:勾配を2乗した値を蓄積し、学習率をパラメータに適用することで、過去に大きく動いたパラメータの学習率を小さくする
- RMSProp:指数移動平均を蓄積し、過去に大きく動いたパラメータの学習率も時間が経つと再度大きくする
- Adam:MomentumやAdaGrad、RMSPropの長所を合体させた手法で、勾配の平均と分散を推定し利用する
- 過学習
- 訓練誤差が小さいにも関わらず、汎化誤差が小さくならないこと。ディープラーニングでは特に過学習が起きやすい。過学習を抑制する手法として、正則化やドロップアウトがある。
- 正則化
- 過学習(バリアンスの大きい状態)を防ぐため、パラメータやモデルに制約をかけること。
- L1正則化:LASSO、損失関数にL1ノルムを加え、スパースな解が得られるようにする。自動的に特徴量の選択が行われる。
- L2正則化:Ridge、荷重減衰(Weight Decay)。損失関数にL2ノルムを加えることで、パラメータのノルムにペナルティを課し、ノルムを小さく抑える。
- ドロップアウト
- 一定の割合のノードをランダムに消去して学習を行い、過学習を防ぐ手法。擬似的にバギングを実現する。推論(評価時)は全てのノードを用いるため、出力には重みづけが必要。
- アーリーストッピング
- 早期終了
- 学習を途中で中断して過学習を防ぐこと。ノルムペナルティと同等の効果が得られる。
- 勾配消失問題
- 誤差の勾配を逆伝播する過程において、勾配の値が消失してしまい、入力層付近での学習が進まなくなる現象。活性化関数が何度も作用することで勾配が小さくなりすぎてしまうことが原因のため、ReLUのような活性化関数を用いたり、スキップ接続(スキップコネクション)を導入したりすることで、勾配消失問題の回避が期待できる。
- 勾配爆発問題
- 勾配発散問題
- 勾配消失問題とは逆に、勾配が大きくなりすぎてアルゴリズムが発散してしまうこと。勾配クリッピングによって勾配の上限値を定めておくことで、勾配爆発問題の回避が期待できる。
- 内部共変量シフト
- 入力の分布が学習途中で大きく変わってしまうこと。バッチ正規化により各層での出力を正規化することで、層が深くなっても入力の分布の変化を少なくできる。
- バッチ正規化
- DNNの各層において、活性化関数をかける前に伝播してきたデータを正規化する手法。内部共変量シフトを防ぎ、過学習を抑制することができる。
- エポック
- 訓練データを学習に用いた回数。
- イテレーション
- 重みを更新した回数。
- オンライン学習
- 逐次学習、確率的勾配降下法
- 訓練データ1つに対して重みを1回更新する学習法。
- ミニバッチ学習
- ミニバッチに含まれるデータについて誤差の総和を計算し、その総和が小さくなるよう重みを更新する学習法。
- バッチ学習
- 最急降下法
- 訓練データすべてに対して誤差を計算し、その総和が小さくなるよう重みを1回更新する学習法。イテレーションとエポックが等しくなる。
- 蒸留
- Distillation
- 既に学習済みのモデルをそのまま単純なモデルに学習させること。小さくて軽量だが高精度なモデルを実現することができる。新たにパラメータやネットワーク構造を設定する必要はない。
- 転移学習
- Transfer Learning
- 既に学習済みのモデルを別の領域の学習に利用すること。学習済みモデルを他のモデルに適用することができる。
- ファインチューニング
- Fine Tuning
- 統合学習。既に学習済みのモデルの一部を再利用して、新しいモデルを構築すること。重みデータを一部再学習して微調整し、特徴量抽出機として利用することができる。
活性化関数
- ステップ関数
- f(u) = 1 (u>=0), 0 (u<0)
- 単純パーセプトロンを構成するが、u=0で微分できず実際には用いられない。
- シグモイド関数
- ロジスティックシグモイド関数
- 入力を正規化する性質を持つが、勾配消失問題を起こしやすい。導関数の最大値は0.25。重みの初期値にはXavierの初期値(前層のノード数をnとしたとき、平均0・標準偏差1/√nの正規分布を用いる)が良いとされている。
- ソフトマックス関数
- 出力を正規化して、確率として解釈する際に用いられる活性化関数。分類問題で出力層付近で用いられる。
- ReLU
- Rectified Linear Unit、レル、ランプ関数、正規化線形関数
- 勾配消失問題が起きにくい活性化関数。入力が0以下の場合は出力が0、0より大きい場合は入力が出力と同じになり、正規化機能を持たない。双曲線正接関数(tanh、ハイパボリックタンジェント)に代わって活性化関数に用いられるようになった。重みの初期値にはHeの初期値(前層のノード数をnとしたとき、平均0・標準偏差√(2/n)の正規分布を用いる)が良いとされている。
- Leaky ReLU
- ReLU関数の拡張関数。入力が0以下のときもわずかに傾きをもつ。
オートエンコーダー・主成分分析
- 自己符号化器
- オートエンコーダー
- 入力層と出力層のノード数が同じで、中間層のノード数は入出力のノード数よりも少ない、砂時計型の構造を持つNN。入力側をエンコーダ、出力側をデコーダと呼ぶ。出力を入力自身に近づけること(正解ラベルとして入力自身を用いること)を目指す。これにより中間層で情報を圧縮することができ、次元削減の効果が生まれる。音声処理の分野で非常に高い精度を記録している。
- 積層オートエンコーダー
- Stacked Autoencoder、SAE
- オートエンコーダーを何層もつなぎ合わせて構成したDNN。初めに入力層に近い層から順に貪欲法(Greedy)で学習させる事前学習(Pre-training)を行い、最後にファインチューニングを行う。
- 主成分分析
- PCA、Principal Component Analysis
- 線形な次元削減の代表的手法の一つ。寄与率を調べることで各成分の重要度を測ることができ、また主成分を調べることで各成分の意味を推測することができる。活性化関数に恒等写像を用いた3層のオートエンコーダーと同様の結果を返す。
CNN
- CNN
- Convolutional Neural Network、畳み込みニューラルネットワーク
- 画像認識などの空間データに応用するために改良されたDNN。画像全体に対して一定範囲の特徴量を抽出し、それを繰り返すことで、初めは単純な特徴を、より後の畳み込み層に行くにつれてより複雑な特徴を拾うことができる。入力は左から右方向にのみ伝播する順伝播型で、音声認識や自然言語処理にも応用されている。出力層に近い隠れ層の値をとることで次元削減の効果も得る。入力画像は次の層を順に通る。
- 畳み込み層:積和演算+活性化関数により、特徴マップに変換する(畳み込み演算)
- プーリング層:さらに平均値や最大値を用いてプーリングを行い、さらに小さな画像に変換される(プーリング演算)
- 全結合層:①や②が何度か繰り返され、最後に出力値を得る
- 重み共有
- CNNの畳み込み層において、全ユニットで重みが同じになること。有用な特徴量が画像の位置によって大きく変化しないようにする。畳み込み層のパラメータ数は全結合層のパラメータ数と比べて減少するため、計算量が少なくなる。
- プーリング
- 画像内の物体の位置のズレに対する処理。周りの平均値で圧縮する平均プーリング、周りの最大値で圧縮する最大プーリング、周りの値をp乗しその標準偏差をとるLpプーリングなどが存在する(p=1のときは平均プーリング、p=∞のときは最大プーリングと等価)。
- ストライド
- 畳み込み演算において、フィルタ(カーネル)を移動させる刻み。
- パディング
- 畳み込み演算において、画像の周囲に数ピクセル分値を付け足して画像サイズを大きくする処理のこと。ゼロパディングでは付け足し部分の値に0を使う。
- 特徴マップの幅 = (入力画像の幅 + パディング × 2 - フィルタの幅) / 2 + 1
セグメンテーション・物体検出
- セグメンテーション
- 画像中の物体をピクセルごとに領域予測やクラス分類すること。FCN(Fully Convolutional Network、完全畳み込みネットワーク)やFCNの改良版であるSegNetやU-Netが用いられる。逆畳み込みによって「物体が何か」という出力から「物体がどこにあるか」という出力に変換している。
- セマンティックセグメンテーション:画像上の全ピクセルに対し「どのカテゴリーに属するか」についてクラス分類する。
- インスタンスセグメンテーション:「どのカテゴリーでどのインスタンスか」についてクラス分類する。全ピクセルにラベルが振られるわけではない。
- パノプティックセグメンテーション:セマンティック・セグメンテーションとインスタンス・セグメンテーションを組み合わせた手法。
- FCN
- Fully Convolutional Network、完全畳み込みネットワーク
- 全ての層が畳み込み層であるCNNで、入力画像の画素数だけ出力層が必要。セマンティックセグメンテーションに用いられているアルゴリズム。全結合層であれば入力するマップのサイズは決まってしまうが、最終層を畳み込み層にすることでその制限が無くなる。
- U-Net
- セグメンテーションに用いられるFCNの一種。エンコーダ・デコーダ構造を採用していて、エンコーダ側で特徴マップを一定サイズにダウンサンプリングした後、対となるデコーダの特徴マップにアップサンプリングして連結する。
- 物体検出
- 画像中の物体やその位置を、短形の領域を用いて特定すること。R-CNNやYOLO、SSDが用いられる。
- R-CNN
- Region CNN
- セレクティブ・サーチ(Selective Search)によって初めにオブジェクト領域の候補を抽出し、領域候補の領域画像はCNNによって特徴量が計算され、その後SVMによってカテゴリの識別が行われる。Faster R-CNNやMask R-CNNなどに応用された。
- ROIプーリング
- 物体検出において、オブジェクト領域の候補(ROI、Region of Interest)に対し特徴量を抽出して、固定サイズに縮小してプーリングを行うこと。
- YOLO
- You Only Look Once
- あらかじめ画像全体をグリッド分割しておき、各領域ごとに物体のクラスとバウンディングボックス(bounding box)を求める物体検出アルゴリズム。CNNのアーキテクチャがシンプルになったため、超高速でリアルタイムで実行可能。OpenCVで実装可能。Bounding Boxの出力を出力層だけで行っている。
- SSD
- Single Short Detector
- 小さなフィルタサイズのCNNを特徴マップに適用する物体検出アルゴリズム。マルチスケール特徴マップを利用し、高精度の検出率を達成している。またYOLOよりも高速。複数の層からBounding Boxの出力を行っている。
- EfficientNet
- 2019年5月にGoogle Brain社から発表された画像認識モデル。CNNにおける深さ・広さ・解像度(=入力画像の大きさ)をバランスよく調整できるよう、Compound Coefficient(複合係数)を導入した。これによりネットワーク構造がシンプルになり、パラメータは少なく、学習時間は短く済むため、転移学習にも向いている。
- HOG
- Histogram of Oriented Gradients
- 物体検出に用いられる特徴量の一種。局所的な輝度の勾配方向の強度分布を用いてセル単位でヒストグラム化し、ブロック単位で正規化する。
- 画像キャプション
- 画像を入力として与えると、出力として画像の内容を説明する短い文章を生成すること。CNNによって画像の特徴を抽出し、またLSTMで文章の特徴を抽出し、それらを結合させることで、画像の描写文を得ることができる。
- 画像ピラミッド
- もとの画像の解像度をどんどん小さくしていきをそれらを並べたもの。縮小する過程でガウシアンぼかしを入れたものをガウシアンピラミッド、ガウシアンピラミッドにおいて解像度間の差を取ったものをラプラシアンピラミッドと呼ぶ。
- OpenCV
- 画像処理・画像解析に特化したオープンソースのライブラリ。2006年当初はIntelが開発。2018年にはOpenCV 4.0がリリースされた。
- グレースケール化:3チャンネルのカラー情報をグレースケールに変換し、計算量を減らす
- 平滑化:ノイズを除去し、学習の精度を上げる
- ヒストグラム平坦化:画素値を全範囲にまんべんなく分布させ、画像のコントラストを改善する
- 局所コントラスト正規化:減算正規化や除算正規化により、濃淡の平均や分散を正規化する
- 特徴点抽出:画像の中で特徴的なポイントを抽出する、SIFT・SURF・FASTなどのアルゴリズムを用いる
RNN
- RNN
- Recurrent Neural Network、再帰型ニューラルネットワーク
- 内部に閉路(再帰構造)をもつNNで、過去の情報を保持しておくことができ、時系列データの解析や自然言語処理への応用に適している。時系列方向に沿って誤差逆伝播を適用する通時的誤差逆伝播(BPTT、Back Propagation Through Time)が用いられる。
- LSTM
- Long Short-Term Memory
- RNNにおいて遠い過去の入力も現在の出力に反映できるようにする方法。勾配消失問題を解決する手法として提案された。時系列データの解析におけるデファクトスタンダードとなっている。セル(CEC、Constant Error Carousel、情報を記憶する構造)やゲート(input gate、output gate、forget gateの3つ)をそれぞれ最適化しなくてはならず、計算量を多く要する。忘却ゲート(forget gate)は1997年発表当時のオリジナルのモデルには含まれなかった。
- GRU
- Gated Recurrent Unit
- LSTMを簡略化して計算量を削減した手法。
- Memory Networks
- LSTM以上の長期記憶を実現し、国語の読解問題を解くことなどに応用できる。PassageとQuestionとAnswerのペアを学習させ、未知なるPassageとQuestionのペアを渡すと、そこからAnswerを返すことができる。
- 双方向RNN
- Bidirectional RNN、BiRNN
- LSTMを2つ組み合わせて、過去からと未来からの双方向で学習できるようにしたモデル。
- 教師強制
- Teacher forcing
- RNNの学習において1時刻前の正解データを現時点の入力として用いる手法。教師データがあることで学習の収束が早くなる可能性があるが、過学習も起こしやすい。
自然言語処理
- 言語モデル
- 人間が用いている言語を、確率によって数学的に定義づけるモデル。「こんにち→ひ」よりも「こんにち→は」のほうが出現確率が高い、等。NNによって近似されたニューラル言語モデルがよく用いられる。
- 形態素解析
- テキストデータを文法・単語に基づいて形態素に分割し、その形態素の品詞を判定する技術。従来は音声認識に隠れマルコフモデル(HMM、Hidden Markov Model)が用いられていたが、現在ではディープラーニングに置き換えられ、飛躍的な精度向上が実現されている。
- 構文解析
- 形態素解析を基にして、その形態素間の構文的関係を解析すること。
- 含意関係解析
- 2つの文の間に含意関係が成立するかを判別すること。文1と文2が与えられ、文1が正しいとき、文2も正しいか否かを判定するタスク。
- 照応解析
- 代名詞などの指示対象や省略された名詞を推定・補完すること。
- 談話構造解析
- 文章中の文と文の関係や、話題の推移を明らかにすること。
- TF-IDF
- Term Frequency - Inverse Document Frequency
- 文章に含まれている単語の重要度を評価する手法。
- BoW
- Bag-of-Words
- 形態素解析を行ったデータをベクトルの形式に変換する手法。
- LDA
- Latent Dirichlt Allocation
- トピックを潜在変数として文中の単語からトピックを推定する機械学習手法。ディリクレ分布が用いられる。
- LSI
- Latent Semantic Indexing
- 文章ベクトルにおいて複数の文書に共通して現れる単語を解析することによって低次元の潜在意味空間を構成する方法。特異値分解が用いられる。検索エンジン等で「車」と「自動車」を同じ意味として扱うための次元圧縮方法。
- word2vec
- 分散表現(単語埋め込み、可変長の単語を固定長のベクトルとして表現すること)により、単語動詞の近さや足し引きなどの演算を考慮できるようにする仕組み。2013年にGoogle社によって開発された。「周辺語の予測」というダミータスクを解くため、skip-gram法(Continuous Skip-Gram Model、スキップグラム、ある単語から周辺の単語を予測すること)やCBOW(Continuous Bow Model、周辺の単語からある単語を予測すること)が用いられる。
- seq2seq
- 系列変換モデル、機械翻訳に用いられる生成モデル。フリーテキストを入力としフリーテキストを出力する。エンコーダRNNとデコーダRNNを持つ。
- GNMT
- Google's Neural Machine Translation、Googleが2016年に発表した自然言語処理モデル。Google翻訳に採用されていた。
- BERT
- Bidirectional Encoder Representations from Transformers、Googleが2018年に発表した自然言語処理モデル。双方向Transformer(bidirectional transformer)を採用していて、特徴的な事前学習により過去と未来の双方向からの文脈理解が可能になった。
- MLM:Masked Language Model、マスク言語モデル、文章の穴埋め問題を解くモデル
- NSP:Next Sentence Prediction、次文予測、2文が渡されたとき連続した文かどうかを判定するモデル
- Attention
- 注意機構、BERTやTransformer等の自然言語処理で適用されるネットワークモデル。より効果的な文ベクトルを計算することができる。queryはkeyにより取得するmemoryを決定し、対応するvalueを取得する。
- XLNet
- 2019年6月にCarnegie Mellon大学とGoogle Brainの研究チームが発表された自然言語処理モデル。BERTと同じく双方向Transformerを用いつつ、MLMの代わりに単語の順番をバラバラにして学習する。
- GPT-3
- Generative Pretrained Transformer、文章生成言語モデル。OpenAIが開発。非常に高度なライティングが可能。
生成モデル
- GAN
- Generative Adversarial Network、敵対的生成ネットワーク
- イアン・グッドフェローにより考案され、生成ネットワークと識別ネットワークからなる教師なし学習手法。ヤン・ルカンは「GANは、機械学習において、この10年間で最もおそろしいアイデアである」と述べている。
- BigGAN-deep
- 最大512×512ピクセルの高解像度画像を条件付きで生成するモデル。歴史上最強のGANジェネレータと呼ばれている。一方、DeepMind社はGANを使わず、VQ-VAEを使用した画像生成に取り組み成果を上げている。
- VAE
- Variational Autoencoder、変分自己符号化器・変分オートエンコーダー
- GANとともにディープラーニングによる生成モデル。オートエンコーダーの潜在変数に確率分布を導入し、平均と分散を表現するように学習する。
- Adversarial Example
- Adversarial Attack、Adversarial Perturbation
- 学習済みのモデルを欺くように人工的に作られたサンプル。人の目には判別できないようなノイズを加えることで人為的に分類器の判断を誤らせてしまう。
深層強化学習
- 深層強化学習
- DNNを用いて行動価値関数の近似計算を行うアイデア。特に、DeepMind社によって開発されたDQN(Deep Q-Network)が有名で、AlphaGoにも用いられた。価値ベース・方策ベース・モデルベースの全てのアプローチを取り入れたアルゴリズムはRainbowモデルと呼ばれる。
- 価値ベース:価値関数を最大化する。Q学習・TD学習・SARSA等が用いられる。任意の方策で探索できるが、行動空間が広いと学習が難しく、マシンパワーも必要。
- 方策ベース:方策関数を最大化する。Actor-Critic法・勾配降下法等が用いられる。行動空間が広くても学習できるが、モデル劣化後の復帰が難しい。
- モデルベース:A3C(Asynchronous Advantage Actor-Critic)など。
- REINFORCE
- 方策勾配にもとづく深層強化学習に用いられるアルゴリズム。行動価値関数の値を即時報酬で近似する。
- SARSA
- State、Action、Reward、State、Action
- 深層強化学習に用いられるアルゴリズム。ε-greedy法に基づき一定の確率でランダムに行動し、それら一連の行動の結果から状態価値を学習する手法。Q学習が方策オフ型と呼ばれるのに対し、SARSAは方策オン型と呼ばれる。
- NAS
- Neural Architecture Search
- AutoMLの一種。CNNやRNNのアーキテクチャを方策勾配ベースの強化学習で探索し、最適化されたネットワークを実装する手法。Controller RNNの更新には、REINFORCEアルゴリズムが用いられる。NASNetやENAS等に応用されている。
- 表現学習
- データから低次元の特徴を獲得する学習。
- 一気通貫学習
- ロボティクス分野において、ロボットの一連の動作を1つのDNNで実現しようとする学習。ロボットが持つカメラ・マイク・圧力センサなどの様々なセンサ情報を組み合わせて処理することをマルチモーダル情報処理と呼ぶ。
その他
- t-SNE
- t-distributed Stochastic Neighbor Embedding、t分布型確率的近傍埋め込み
- データ視覚化・次元削減アルゴリズムの一つ。「近さ」の指標を確率分布によって表現する。
- ベイズ最適化
- 有力なBlack-box関数最適化手法の1つ。ハイパーパラメータ最適化に利用され、グリッドサーチやランダムサーチと比較して効率よく優れた解が求められることが報告されているが、計算時間がかかる。
- インセプションモジュール
- Inceptionモジュール
- ILSVRC2014で優勝したGoogLeNetが採用していたモデル。畳み込み層やプーリング層から構成される小さなネットワークをモジュールとして定義し、ネットワークを分岐させた並列構造を持つブロックを用いてサイズの異なる畳み込みを行った。
- WaveNet
- DeepMindが開発した音声合成・認識モデル。音声合成(Speech Synthesis)と音声認識(Speech Recognition)の両方を行う。
- ネオコグニトロン
- Neocognitron
- 1980年代に福島邦彦によって提唱。CNNの原型となっている。人間が持つ視覚野の神経細胞を模しており、特徴抽出を行う「S細胞層」と位置ズレを許容する「C細胞層」を交互に接続した多層構造となっている。
- 制限付きボルツマンマシン
- RBM、Restricted Boltzmann Machine
- 「可視層(入力層)」と「隠れ層」の2層からなるNNで、無向グラフで表現される確率モデル。
- FFNN
- Feed Forward Neural Network
- NNの分野で最初に考案され、入力ノード→中間ノード→出力ノードというように単一方向へのみ信号が伝播する順伝播型。自然言語処理などに用いられていた。
- CapsNet
- カプセルネットワーク
- ジェフリー・ヒントンが開発。特徴をスカラーではなくベクトルで捉える、新しい深層学習アルゴリズム。
- Reservoir Computing
- レザバー(リザバー)コンピューティング
- 物理の複雑系力学における時空間パターンを活用したモデル。RNNの学習手法として提案された。中間層にReservoir(溜め池)を採用することで、少量データによるリアルタイム学習が可能となった。
- Define-and-Run
- 静的にニューラルネットワークを構築する方法。ニューラルネットワークを構築してからデータを流す。TensorflowやCaffe、CNTK等が採用している。
- Define-by-Run
- 動的にニューラルネットワークを構築する方法。データを流しながらニューラルネットワークを構築する。ChainerやPyTorch等が採用している。
0 コメント