Open mizukihiraishi opened 2 years ago
問1.1
SGDでは並列化ができないことは留意する
問1.3
SGDは等高線が円になっている場合はうまくいくが、楕円など歪んでいる場合(当方的でない)はジグザグに更新される p(x ; Θ)・・・Θというパラメータが与えられた下でのp(x)の評価値 p(x | Θ)・・・Θという条件が与えられた下でのp(x)の評価値 データxが与えられたときのシータの確率はp(Θ | x)と書けるがxはパラメータでないためp(Θ ; x)とは書けないが、逆にパラメータΘが与えられたときの確率はp(x ; Θ)と書けるし条件Θが与えられた下でのxの確率と見なしてp(x | Θ)とも書ける
問1.4
np.zerosは引数に配列の形状を指定する np.zeros_likeは引数に指定した配列と同じ形状で値が全て0の配列を返す。
問1.5
Momentum・・・物理法則に準ずる動きで、進む方向と勾配方向が同じであれば、移動量が大きくなる(まっすぐ進んでいれば移動量が大きくなり、曲がりながら進んでいるときは緩やかになる) Nestrov Accelerated Gradient・・・Momentumの改良版で仮の1期先の位置を求め、その位置の勾配を利用して学習を加速させる AdaGrad・・・勾配のアダマール積を蓄積させていく(2乗を積み上げていく)ことですでにアップデートされたパラメータほど更新量を小さくする(見かけの学習率を小さくする) AdaGradの欠点・・・一度更新量が飽和した重みが更新されなくなる RMSProp・・・AdaGradの改良版で、勾配の2乗の移動平均(指数移動平均)を蓄積することで見かけの学習率を変化させてAdaGradの欠点を解決した ここでの指数移動平均とは指数平滑化移動平均のことで、減衰率ρの割合で足していくことによって過去の情報が指数関数的に薄れていく AdaDelta・・・AdaGradの改良版で、勾配の2乗の移動平均と更新量の2乗の移動平均を用いて見かけの学習率を変化させていく 学習率ηを更新量の移動平均と置き換えることで単位をそろえている Adam・・・RMSPropとMomentumを組み合わせたような方法 1次のモーメント(Momentumに似た部分)と2次のモーメント(RMSPropに似た部分)を組み合わせている
問2.1
np.floor・・・小数点以下切り捨て、畳み込みのサイズを計算した際に割り切れない場合は切り捨てる 畳み込み演算後のサイズ・・・kh + 2p - fh / s -1
問2.2
np.pad http://arduinopid.web.fc2.com/Q3.html np.pad(x, [(0, 0), (0, 0), (PH, PH), (PW, PW)] N, Cはパディングしないので(0, 0)、縦は上下をPH分広げ、横は左右をPW分広げる
問2.3
s[i : j : k] iからjまでの間で増分kの要素を取り出す(kの初期値は1、2であれば一つ飛ばしでスライス) 終了値jは含まれない(i以上j未満)
問3.4
next_c = CEC 忘却ゲート + tanh(z) 入力ゲート np.hsplit・・・axis=1のsplitと同じで、行列を横に分割する(例 [[1,0],[1,0]]→[[1],[1]], [[0],[0]]) concatenate axis=0・・・縦(行方向)に結合、axis=1・・・横(列方向)に結合 np.matmul・・・行列積、*・・・同じ形の行で対応する要素を積算 https://www.anarchive-beta.com/entry/2021/01/10/180000
問3.5
覗き穴結合では、忘却ゲート・入力ゲートでは前回の記憶セルの情報を使い、出力ゲートでは今回の記憶セルの情報を使う 基本的な覗き穴結合では記憶セルCt(orCt-1)と重みWの行列積を足し合わせるが、アダマール積を用いると計算量が削減できるため、行列積とアダマール積どちらも選択肢にある場合はアダマール積が推奨される
問4.2
ResNetのResidual BlockにおけるSkipconnectionは恒等写像であるが、これはIdentity mappingとも呼ばれる
問4.3
Residual Blockが導入されることによって、深い中間層が不要な場合に不要な層の重みが0になり、勾配が小さい値でもスキップコネクションを通すことによってわずかな勾配の情報も残すことができる。
問5.1
GoogLeNetの1×1畳み込みは次元削減の効果がある
問5.2
GoogLeNetの特徴にAuxiliary classifiers(Auxiliary Loss)があり、これはGoogLeNetを学習させるとき、ネットワークを分岐させたサブネットワークとして学習し、計算した勾配を分岐元のネットワークにフィードバックする。 Auxiliary classifiersはResidual BlockやBatch Normalizationと同様に勾配消失問題の対応策である。
問6.1
R-CNNの特徴 ・Selective Searchと呼ばれる色や濃淡勾配などが似ている領域に分けて隣接する似ている領域同士を結合していく手順を行う ・物体のカテゴリを識別するのにSVMを用いている ・正確な領域の推定はその領域のIoUをR-CNN中の回帰モデルに推定させ、推定したIoUが閾値を超えているかどうかで判定する ・R-CNNは特徴抽出のCNN、カテゴリ推定のSVM、バウンディングボックス回帰器など各学習の目的ごとに別々に学習させる必要があるためEnd-to-End学習ができない R-CNNの手順 1.入力画像に対してSelective Searchで候補領域を抽出 2.CNNのインプットの大きさに合うように領域中の画像をリサイズ 3.リサイズした物体候補領域に対してCNNで特徴マップを計算 4.CNNのoutputを特徴としてそれぞれの領域に何が写っているかSVM or Softmaxで分類 5.物体の詳細位置を決めるため(候補領域のズレを補正するため)に特徴マップとバウンディングボックス-BB座標(矩形の座標)を回帰させる問題を解く R-CNNを改良したSPP-net・・・任意サイズの領域を決まったサイズにプーリングするSpatial Pyramid Poolingを導入し、任意サイズの画像を入力して任意の領域の決まった長さの特徴を計算可能になった
問6.2
https://agirobots.com/fast-r-cnn/ https://blog.negativemind.com/2019/02/20/general-object-recognition-faster-r-cnn/ https://www.slideshare.net/takashiabe338/fast-rcnnfaster-rcnn R-CNNではRoI(Region of Interest 関心領域)の全てをCNNに結合させていたため、計算量が非常に多かった Fast R-CNNの手順 1.入力画像の特徴マップをCNNで計算する 2.Selective Searchで求めた候補領域(RoI)を特徴マップ上に射影 3.特徴マップ上に射影されたRoIをRoI Pooling層に通す 4.何段かFC層(全結合層)を挟んだ後、物体カテゴリの分類問題とBB回帰問題(矩形回帰問題)を同時に解く(Multi-task Loss) 5.学習時には最下層まで誤差逆伝播する ・RoI Pooling 任意サイズの領域をプーリングして固定サイズの出力をする ・Multi-task Loss L = 分類誤差 + λ[背景ではない(背景をu=0とするとu≧1)]BB回帰誤差 分類:物体カテゴリ数+1クラス分類(+1は背景クラスを含むという意味) BB回帰(矩形回帰):候補領域を真のBounding Boxに近づける回帰(そのため、背景クラスは含まない) Fast R-CNNの入力は画像とRoI(特徴マップ上の関心領域) Fast R-CNNまではRoIを抽出する際にSelective Searchを用いていたため計算に時間がかかっていた Faster R-CNNでは入力画像からCNNで特徴マップを生成し、そこからRoIを抽出して高速化を実現した Faster R-CNN概要 特徴マップの生成だけでなく物体候補(RoI)の検出処理もCNNで行うRegion Proposal NetworkでFast R-CNNのSelective Searchと置き換えている End-to-Endで学習する 下図でregion proposalと表記されているのがRPN ・Region Propposal Network(RPN) 画像全t内からCNNで抽出した特徴マップを入力して候補領域のBounding Boxとその領域の物体らしさ(Objectness)を表すスコアを出力する RPNは小さなニューラルネットワークで、特徴マップ上をnnサイズのsliding windowで走査し、各々のnnサイズの注目領域をネットワークの入力とし、各sliding wondow位置に対してk個(後述のAnchor(検出矩形パターン)の種類の数)の候補領域を推定する RPNは以下2つの全結合層(FC層)へ分岐する ・cls layer:物体かどうか(Objectness)を分類する cls layerには、k個の各候補領域がオブジェクトか、背景化の確率を推定した2k個のスコアが出力 ・reg layer:Bounding Boxの回帰を行う reg layerには、k個のBounding boxの座標(x座標、y座標)・サイズ(幅、高さ)を表す4k個の出力 ・Anchor sliding windowに対して、写っている物体の形状が必ずしも正方形に収まらないことを考慮して、Anchorと呼ばれるk個の検出矩形パターンを用意する Anchorはsliding windowの中心を基準に設定される よって、特徴マップのサイズをWHとすると、RPNは合計WH*k個の領域について物体候補かどうかを判定する RPNでAnchorごとの判別を行い、物体である可能性が高いものはFast R-CNNと同様にRoI Pooling以降のネットワークと進み、物体の分類が行われる CNN→RPNと繋がっているが、RPN自体も畳み込みニューラルネットワークの構造を持っており、単純に畳み込み層を共有するだけでは学習するパラメータが相互に依存してしまうため、以下のように段階的に学習する方法が採られている 1.ImageNetで学習済みの畳み込み層を使ってRPNを学習する 2.学習済みRPNが出力するBB(候補矩形)を使って同様にImageNet訓練済み畳み込み層のパラメータを更新する 3.2でファインチューニングされた畳み込み層をfixしてRPNを学習しなおす Faster R-CNNのLoss AnchorごとにL = 分類誤差 + λ[背景ではない(背景をu=0とするとu≧1)]BB回帰誤差 各Anchorは正解データの矩形とIoUが閾値以上であればPositive、閾値以下ならNegative、どちらでもない場合はどちらでもないとして学習時は無視される
正規分布解説 https://tomsekiguchi.hatenablog.com/entry/20180421/1524290925
FCN(全畳み込み Fully Convolutional Network)解説 https://blog.negativemind.com/2019/03/11/semantic-segmentation-by-fully-convolutional-network/
バプニックの原理
https://scrapbox.io/Nodewww/Vapnik%E3%81%AE%E5%8E%9F%E7%90%86
マルコフ決定過程(Markov decision process: MDP)とは、次に起こる事象の確率が、これまでの過程と関係なく、現在の状態によってのみ決定される確率過程のことです。 このような、以前の状態に依存しない性質のことを「マルコフ性」といいます。
https://qiita.com/triwave33
問1.1
問1.3
問1.4
問1.5
問2.1
問2.2
問2.3
問3.4
問3.5
問4.2
問4.3
問5.1
問5.2
問6.1
問6.2
正規分布解説 https://tomsekiguchi.hatenablog.com/entry/20180421/1524290925
FCN(全畳み込み Fully Convolutional Network)解説 https://blog.negativemind.com/2019/03/11/semantic-segmentation-by-fully-convolutional-network/