はじめに
ディープラーニングE資格(JDLA主催)のオンライン講座(ラビットチャレンジ)を受講したときの学習記録になります。
E資格の一通りの科目をカバーしています。学習の参考にしてください。
科目一覧
- 応用数学
- 機械学習
- 深層学習(day1)
- 深層学習(day2)
- 深層学習(day3)
- 深層学習(day4)←ココ
1: 強化学習
・イメージ:
環境(例:職場)にて、エージェントは報酬を最大化するために行動する。方策(例:こうやったらボーナス増えるかな)。
環境の状態Sは常に変わる。エージェントの行動からも環境は変わる。
例では、
行動: 顧客ごとにキャンペーンメールを送信・未送信のどちらかを決定する。
報酬: キャンペーンのコストという負の報酬と、キャンペーンで生み出す売り上げという正の報酬を得る。
最初は知識ゼロで、あてずっぽうで動く。そこから知識を得ながら最適化していく。
1・過去のデータでベストな行動をとり続けると、もっと良い方法が見つけられない=探索が足りない
2・未知の行動のみを取り続けると、過去の経験が生かせない。=利用が足りない
・両者はトレードオフの関係
・エージェントは、方策()と価値(V)を求める。
・教師あり学習・なし学習との違い 優れた方策を見つけることが目標
・特徴
・関数近似法とは
価値関数や方策関数を関数近似する手法のこと。
関数近似法とは・・・昔はAがきたらBを返すような、対応表のようなものを使っていたが、対応自体をニューラルネットワークを使って関数化することができるようになった。
・価値関数とは
状態価値関数(決め方として、環境の状態だけを使う。エージェント関係ない。)と行動価値関数(Q学習で使う。決め方として、環境の状態と、エージェントの行動から決める)。
・方策関数とは
ある状態でどのような行動をとるかを決める関数。
・Q学習
毎回、行動価値関数を更新して学習を進める。
※: 大文字のパイ。総和。相乗。
2: AlphaGo
AlphaGoLee
・方策関数=ValueNet, 価値関数=PolicyNet。両方とも畳み込みNNである。
・PolicyNetで19*19マスのどこに打つか、の確率予測を出力する。ValueNetでは、勝てるか負けるか、を出力する。
・学習順序は、まず教師あり学習で両方を行い、次にPolicyNetを強化学習し、ValueNetを強化学習する。
・RollOutPolicy。一手決めるのに3mm秒かかるが、それを何億回と繰り返していると時間がかかりすぎる。もっと高速に着手確率を出すために使われる。1000倍速くなる。
・PoliciNetの教師あり学習をまず行う。RollOutPolicyで高速で一手を決めさせて学習。
・モンテカルロ木探索: 価値関数を学習させる手法。RollOutPolicyを用いて高速に学習。
・AlphaGo Zeroについて。
教師あり学習は使わずに強化学習だけ。
Leeでは入力値をヒューリスティックに選んだが、これをやめた。
PolicyNetとValueNetを合体。
モンテカルロ木探索をやめた。
Residual Netを導入。
・Residual Network
深い層を持つ。そこに、ネットワークにいろんなパターンでショートカットを作成する。深いが勾配消失・爆発問題を防ぐ。
良い効果としては、スキップがあるので、ネットワークの中で経路の組み合わせが増えるので、アンサンブル効果がある。
・現代の深層学習で採用される最重要な基本的ネットワーク構造
畳み込み、プーリング、RNN、Attension
3: データ並列化
・モデルを高速化させるもの
データ並列化、モデル並列化
・分散深層学習
毎年10倍くらい、データ量とモデルサイズが増えて計算量が増す。PCスペックは18か月で2倍になる。分散させよう。
データ並列とモデル並列がある。
・データ並列化
PCを増やしたり、一つのPCでGPUやCPUを増やす。
・データ並列化: 同期型
学習すべきデータを各ワーカに配る。各ワーカの同期をとって計算が終わるまで待ち、それぞれで出した勾配の平均で、親モデルを更新する。理論的には3倍速い。
・データ並列化: 非同期型
各ワーカの同期をとらない。学習できたらパラメータサーバにデータを送る。サーバの最新の勾配を使って、その次の学習を進める。
最新のモデルが必ずしも使えないのはデメリット。
4: モデル並列化
・一つのモデルをブロックに分けてワーカに渡す。モデルの分岐で分けたりする。
・GPUによる高速化
CPUは少数精鋭のエリート。GPUは一般ワーカー。単純計算を大量の人数で処理する。NNに向いている。
・CUDA
GPU上で並列コンピューティングを行うためのプラットフォーム
NVIDIA社が開発しているGPUのみで使用可能。
Deep Learning用に提供されているので、使いやすい
・モデルの軽量化とは
モデルの精度を維持しつつパラメータや演算回数を低減する手法の総称
5: 量子化
・巨大なネットワークでは、大量のメモリと演算装置が必要。
・通常のパラメータの64bit浮動小数点を32bitなど下位の精度に落とすことで、メモリと演算処理の削減を行う。
・計算が高速化され、メモリの必要量が減る。ただし、精度は落ちる。
・GPUでは単精度(32bit)の演算を行うことができる。倍精度が必要なときは二つ同時に使う。
・どの精度を選ぶのか?深層学習では半精度(16bit)でよい。しかも半精度ではGPUは非常に高速になる。
6: 蒸留
・規模の大きいモデルの知識を用いて、それに近い性能を持たせつつ、軽いモデルを作成する。
・教師モデル(精度の高い複雑なモデルやアンサンブルされたモデル)と生徒モデル(教師をもとに作られた軽量なモデル)の二つで構成される。
・データを両方のモデルに入力する。教師は重みの更新が済んでいるので固定。生徒だけ学習させる。両者の誤差を合わせても生徒だけの誤差になる。誤差を生徒モデルにフィードバックして、教師に合うように学習される。
7: プルーニング(Pruning)
・ネットワークが大きくなった時に、パラメータの一部は役に立ってないので削除する。
・盆栽の剪定のように、ニューロンの一部を消す。
・重みがしきい値より小さい場所を消す。
・モデルの軽量化まとめ
量子化:重みの精度を下げることにより計算の高速化と省メモリ化を行う技術
蒸留:複雑で精度の良い教師モデルから軽量な生徒モデルを効率よく学習を行う技術プルーニング:寄与の少ないニューロンをモデルから削減し高速化と省メモリ化を行う技術
8: MobileNet
・畳み込みの方法を工夫している。
・従来の畳み込みの計算量について
H*W*K*K*C*M
・DepthwiseConvolution フィルタを1枚に限定する。計算量について。
H*W*C*K*K
・PointwiseConvolution フィルタのサイズを1*1にして、フィルタ数Mは変えない。
H*W*C*M
・上記2つを組み合わせる方法である
計算量が減る。
今は第三世代まである。
9: DenseNet
・複数チャネルの画像の入力の際に、前のレイヤーで計算したチャネルが追加されて伝達される。
・Dense Blockの計算。前からのものと、前の前からのものが、入力に足される。
4回、付け加える操作が行われるから、入力:k0 = 4*k, 出力:k
・kをネットワークのgrowth rateと呼ぶ。一層通過するごとに、kチャネルずつ増加。
・Transition Layer:
Convolution,Poolingを行う。一旦、特徴量抽出して3チャネルに戻す。そこからまたDense Blockで増やす。
・最後は全結合層へ。
・メリット: 各ブロック内で特徴量サイズが同じになる。
10: BatchNorm
・まとめ
レイヤー間を流れるデータの分布を、ミニバッチ単位で平均が0・分散が1になるように正規化
Batch Normalizationはニューラルネットワークにおいて学習時間の短縮や初期値への依存低減、過学習の抑制など効果がある。
・問題点
Batch Sizeが小さい条件下では、学習が収束しないことがあり、代わりにLayer Normalizationなどの正規化手法が使われることが多い。
ミニバッチが厄介。学習のハードによってサイズを変更せざるを得ない。汎用性がない。
また、小さすぎても効果に意味がない。一方、増やすと速度に影響あり。
・特徴
ミニバッチに含まれるsampleの同一チャネルが同一分布に従うよう正規化
・イメージ。立方体の図
H*Wの画像を畳み込んでH*W*Cが一つの画像になる。それをN方向に正規化する。N方向の正規化の大きさ(=ミニバッチサイズ)が、影響を与える。
11: LayerNorm
・メモリを節約できる。
・特徴
それぞれのsampleの全てのpixelsが同一分布に従うよう正規化
イメージ。立方体の図
H*Wの画像を畳み込んでH*W*Cが一つの画像になる。それをC方向に正規化する。これならば、N方向の正規化の大きさ(=ミニバッチサイズ)が、影響を与えない。
>一見、問題ありそうに見えるが意外と、精度が落ちないので採用。
入力データのスケールに関してロバスト(=堅牢)
・※参考 Instance Norm
イメージ。立方体の図
H*Wの画像を畳み込んでH*W*Cが一つの画像になる。それを一枚の画像の中の各々のCのみ(赤など)で正規化する。
コントラストの正規化に寄与。画像のスタイル転送やテクスチャ合成で利用。
12: WaveNet
・音声生成モデルで利用。畳み込みで音声を利用。
・イメージ
Wavenetより前の場合:
次元間でのつながりがあれば、畳み込みが使える。
縦軸が時間。時間軸で順次、畳み込んでいく。
Wavenetの場合:
縦軸が時間だが、畳込みの際に飛ばしながら行う。
>Dilated(=拡張) casual(=因果関係) convolutionという
・パラメータ数に対する受容野が広い。
13: Seq2Seq
・はじめに。BERTまでの道のり(3step)
Encorder-Decorder Model(Seq2Seq) > Transformer > BERT
・英日翻訳、音声認識 波形>テキスト、チャットボット text to text。
・入力>隠れ状態>系列に変換
・RNNとは
再帰型ニューラルネットワーク。
系列情報を舐めて内部状態に変換可能。各系列は内部状態を共有。
・言語モデルとは
単語の並びに対する尤度(それがどれだけ起こりうるか)、文章として自然かを確率で評価
文章の各単語が現れる際の同時確率は、事後確率で分解できるので、事後確率をもとめることがRNNの目標となる。
14: Transformer
・はじめに。BERTまでの道のり(3step)
Encorder-Decorder Model(Seq2Seq) > Transformer > BERT
・Attensionを利用。RNNを使わない。計算量が少なくてよい。
・従来、長い文章ほど不利になっていた。>Attention(注意機構)の発達
Attensionは辞書オブジェクト。検索Queryに一致するKeyを索引し、Valueを取り出す。
・Self Attensionが肝
インプットしたすべての情報から決定。文脈を反映した自己表現が得られる。一方、CNNはウインドウサイズが決まっているので限界がある。
15: 物体検知
・物体検知とセマンテックセグメンテーションの論文を読むための基礎知識のまとめ 1/2回目
・いろいろな物体検知
画像1枚に対して、どこに何があるかを見る。物体の検出位置を見つける。BBOX
意味のある領域を分割する。その領域に意味を割り当てる
風船なら、全部が青色か、いろが全部違うか。つまり、物体の個々に興味がある。
・代表的データセット
共通して評価されるデータセットが必要。そのデータセットの特徴を把握している必要がある。
学習において、こっちのデータセットを使うべきだなどと判断できる必要あり。
・ILSVRC17だけは物体個々のAnnotationが与えられていない。
16: セグメンテーション
・物体検知とセマンテックセグメンテーションの論文を読むための基礎知識のまとめ 2/2回目
・SemantecSegmentationの肝
Convolution,Pooling で解像度が落ちることが問題。入力画像と同じ解像度で出力する必要があるから。解像度を元に戻すこと=アップサンプリングが肝。
Poolingって必要?>受容野を広げるために必要。
・FullyConvolutionalNetwork(=FCV)のアイデア
・アップサンプリングの手法 Deconvolution/Transposed convolution
通常のConv.層と同様,kernel size,padding,stride を指定
手順
1. 特徴マップのpixel間隔をstrideだけ空ける
2. 特徴マップのまわりに(kernel size – 1) – paddingだけ余白を作る
3. 畳み込み演算を行う
ご紹介: E資格対策講座 ラビットチャレンジについて
E資格を受けるには、対象の講座の修了が必要です。
ラビットチャレンジは「現場で潰しが効くディープラーニング講座」の通学講座録画ビデオを編集した教材を活用したコースです。
質問等のサポートはありませんが、E資格受験のための最安(2020年5月時点)の講座の一つです。
詳細は以下のリンクからご確認ください。