\documentclass[a4paper]{bxjsarticle}  
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\usepackage{listings}
\usepackage{amsmath} 
\usepackage{graphicx} 

\title{深層学習DAY4}


\begin{document}
\maketitle

\section{強化学習}
長期的に報酬を最大化できるように環境のなかで行動を選択できるエージェントを作ることを目標とする機械学習の一分野.行動の結果として与えられる利益(報酬)をもとに行動を決定する原理を改善していく仕組み.

\subsection{方策の学習方法}
価値ベース.強化学習においてエージェントがある状態に存在したり,行動を選択したりすることにどれくらい価値があるかを定量化.

方策ベース.方策の条件付き確率を 方策勾配法などにより学習し,価値関数を求めることなく直接的に方策を決定.

\subsection{方策勾配法}
方策をあるパラメータで表された関数とし,そのパラメータを学習することで方策を学習する方法.

\section{Alpha Go}
DeepMind社によって開発.打つ手の探索にモンテカルロ木探索法を使用し,基盤の状況認識にCNNを使用.2017年10月に,AlphaGoの強化版AlphaGo Zeroが発表.AlphaGo Zeroの最大の特徴は,完全自己対局(self-play)で学習.最初から自分自身と戦うことで得られたデータのみを使って深層強化学習.

\section{軽量化および高速化技術}
\subsection{分散深層学習}
深層学習は高速な計算が求められる.複数の計算資源を使用し,並列的にNNを構成することで効率の良い学習を行いたい.データ並列化,モデル並列化,GPUによる高速技術は不可欠である.

\subsection{データ並列化}
親モデルを各ワーカーに子モデルとしてコピー.データを分割し,各ワーカーごとに計算させる.同期型と非同期型がある.処理スピードは非同期の方が早い.非同期は最新のモデルのパラメータを利用できないので,学習が不安定になりやすい .(Stale Gradient Problem)同期型の方が精度が良いので現在の主流.

\subsection{モデルの軽量化}
計算の高速化と省メモリ化を行うためモバイル、IoT機器と相性が良い手法.
\subsubsection{量子化(Quantization)}
通常のパラメータの64bit浮動小数点を32bitなど下位の精度に落とすことでメモリと演算処理の削減を行う.計算は高速化するが精度は低下する.
\subsubsection{蒸留}
規模の大きなモデルの知識を使い軽量なモデルの作成を行う.知識の継承により、軽量でありながら複雑なモデルに匹敵する精度のモデルを得ることができる.教師モデルと生徒モデルと言われる.
\subsubsection{プルーニング}
モデルの精度に寄与が少ないニューロンを削減することでモデルの軽量化,高速化が見込まれる.
\section{応用技術}
\subsection{MobileNets}
論文タイトル MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

提案手法

一般的な畳み込みレイターは計算量が多いが,MobileNetは"Depthwise Conv"と"Pointwise Conv"を組み合わせて軽量化を実現.通常の畳み込みが空間方向とチャネル方向の計算を同時に行うがDepthwise Separable Convでは分けて計算を行なっている.Depthwiseでチャネル毎に空間方向へ畳み込んで,その後にPointwiseでチェネル方向へ畳み込む.
\subsection{DenseNet}
論文タイトル : Densely Connected Convolutional Networks. G. Huang et., al. 2016

提案手法

Residual Blockでは前1層の入力のみ後方へインプットするが,DenseBlockでは前方の各層からの出力全てが後方の層へ入力として用いられる.
\subsection{Wavenet}
生の音声波形を生成する深層学習モデル.Pixel CNNを音声に応用したもの.メインアイデアは時系列データに対して畳み込みを適用.

\subsection{ResNet}
従来より層が深いモデル.ResNetの Skip connection (identity) はパラメータがないので軽量,過学習や勾配消失発生しにくい.

Wide ResNet

フィルタ数をk倍したResNet.パラメータを増やす方法として,層を深くするのではなく各層を広くした.

\subsection{EfficientNet}
効率的なスケールアップの規則を採用することで当時の最高水準の精度を上回り,同時にパラメータ数を大幅に減少.「幅,深さ,解像度」などを何倍増やすかは複合係数(Compound Coefficient)を導入することで最適化.従来のモデルよりパラメータが1/8ぐらい小さい.転移学習の最適.その割にモデルが複雑でない.

\subsection{物体検出モデル}
\begin{itemize}
    \item YOLO
    \item SSD
    \item RCNN
    \item Fast RCNN
    \item RetinaNet
    \item CornerNet
\end{itemize}

\subsubsection{指標}
\begin{itemize}
    \item IoU (Intersection over Union)
    \begin{itemize}
        \item 物体検出で利用できる評価指標
    \end{itemize}
    \item mAP (mean Average Precision)
    \begin{itemize}
        \item APを全てのクラスについてさらに平均したもの
    \end{itemize}
\end{itemize}

セマンティックセグメンテーションは物体領域を画素単位で切り出し,各画素にクラスを割り当てる手法.
    
\subsubsection{モデル}
\begin{itemize}
        \item FCN (Fully Convolutional Network)
        \item 完全畳み込みニューラルネットワーク
        \item 全ての層が畳み込み層、全結合層がない
        \item 任意のインプットサイズでOKなので特徴
    \end{itemize}
    \begin{itemize}
        \item U-Net
        \item アーキテクチャがUの字に見えるから「U-Net」
        \item 生物医科学の画像セグメンテーションを行うために2015年に発表
        \item Skip Connectionを用いて畳み込みによって失われる位置情報を保持している
    \end{itemize}

\subsection{Mask R CNN}
\subsubsection{R-CNN (Regional CNN)}
物体検出タスクと物体認識タスクを順次に行う.関心領域(ROI: Region of Interest).R-CNNは処理が重くて遅いのが問題.
\begin{itemize}
        \item 改良版 : Fast R-CNN (ROI毎に畳み込み層に通すのではなく、画像毎に一回の畳み込み操作を行う)
        \item さらに改良版 : Faster R-CNN (ROIの切り出しもCNNで行う)
\end{itemize}

\subsubsection{Mask R-CNN}
Faster R-CNNを拡張.インスタンスセグメンテーションに対応するので,Faster R-CNNの物体検出機能にセグメンテーションの機能を追加したイメージ.BB内の画素単位でクラス分類を行うため,物体の形も推定可能.Mask R-CNNは "ICCV2017 Best Paper".

\subsection{FCOS(Fully Convolutional One-Stage Object Detection)}
アンカーベースの手法のデメリットを回避し,アンカーベースに匹敵するもしくは超える精度を出した (アンカーフリー).FPN(Feature Pyramid Network)を使用して特徴マップを作成し,「head」と言う拡張部分を各特徴マップの後に追加して,分類,バウンディングボックス回帰とCenter-nessと言う新しいインデックスを学習するモデル.複数のサイズの特徴マップを生成する手法.アンカーボックス欠点は事前設定するハイパラの数とポジティブサンプルとネガティブサンプル数の不均衡である.v

\subsection{Transformer}
RNNもCNNも使わずに "Attention" を使用したEncoder-Decoderモデル.入力と出力の文章同士の広範囲な依存関係を捉えられる.並列化がかなりしやすく訓練時間が圧倒的に削減できる.

アーキテクチャポイント
\begin{itemize}
        \item Encoder-Decoder Model
        \item Attention
        \item Multi Head attention
        \item Position Encoding
\end{itemize}

\subsection{BERT}
2018年にGoogleが発表したNLP(自然言語処理)のモデルの一つ.Bidirectional Transformerをユニットにフルモデルで構成したモデル.肝は事前学習.MLM(Masked Language Modeling)は複数箇所が穴になっている単語予測.NSP(Next Sentence Prediction)は2つの文が連続したものかどうか判定.

\subsection{GPT}
2019年にOpenAIが開発した有名な事前学習モデル.GPT-3のパラメータ数は1750億個にもなり、約45TBのコーパスで事前学習.Transformerアーキテクチャをベースにし、巨大なデータセットで事前訓練された後,さまざまな自然言語処理タスクに対してファインチューニングが可能.GPTはトークン単位での処理を行うため,長文になるほど計算リソースが増加し,生成される文章の品質も低下する傾向がある.

\subsection{音声認識}
\subsubsection{波形の扱い}
\begin{itemize}
        \item 標本化

アナログの波形データを一定間隔に抽出

        \item 量子化

標本化で抜き出したデータをそれぞれ数値に変換する
        
        \item サンプリング周波数

どのような間隔でデータを区切るか
        
\end{itemize}
\subsubsection{フーリエ変換}
非周期的なアナログ信号(連続的な波形)にどんな周波数成分が,どんな大きさで含まれているかを知りたいときに使用する手法.
\subsubsection{窓関数}
ある区間の信号を取り出すために,もとの信号列からある区間を取り出す際にかけ合わせる関数のこと.FFT(Fast Fourier Transform)解析をする前には,信号の周期性を確保するためにもとの信号に窓関数をかけてからFFTを行うことが多い.矩形窓 (Rectangular),ハミング窓 (Hamming)がある.
\subsubsection{メル尺度}
人間の聴覚に基づいた尺度
\subsubsection{ケプストラム}
音声波形をフーリエ変換して得たパワースペクトルについて, その値の対数をとり,さらに逆フーリエ変換した結果を指す.


\subsection{CTC}
音声認識.入力信号を音声特徴ベクトルに変換,その音声特徴ベクトルから対応する単語列を推定するタスク.RNNでは入力と出力が一致する必要があるが,音声認識では必ずしも一致しない問題.CTCはこのギャップを解消する.

\subsection{DCGAN}
DCGANはGANの生成器と識別器として畳み込みニューラルネットワークを用いたもの.バッチ正規化の利用.LeakyReLUの利用.Pooling層がない.

\subsection{CGAN}
生成器と識別器にいくつかの追加情報を与えて,条件づけができるように訓練を行う敵対性ネットワーク.生成器は訓練データ内の各ラベルに応じたリアルなサンプルを学習.識別器は偽のサンプルとラベルの組,本物のサンプルとラベル組を見分ける.識別器を騙すためには,CGANの生成器はリアルな画像を生成するだけではダメでラベルにもマッチしなくてはいけない.生成器の訓練が終われば自分が生成したい画像を生成することができる.

\subsection{Pix2Pix}
教師ペアが必要なドメイン間の変換.CGANの一種で条件として画像を与える.生成器の出力を正解ラベルとなるようにL1Lossを採用.L1Lossは,ピクセル単位で正解画像に近いような画像を生成.U-Netを利用して画像変換を行う.画像変換では,変換前と変換後で画像は一定レベルで同じ要素を持つのでU Netのencoderで圧縮した情報だけでなく,skip connectionの情報も加え合わせることでより具体的な情報をもとにデコードした.識別器による判定を画像全体を見て一度だけでなく.小さい領域に分割して判定を行う.(PatchGAN)

\subsection{A3C (Asynchronous Advantage Actor Critic) }
強化学習の学習法の一つ.複数エージェントが同一の環境で非同期に学習.並列分散エージェントで学習を行うA3Cのメリットは学習が高速化し,さらに安定する.A3Cはオンポリシー手法であり,サンプルを集めるエージェントを並列化することで自己相関を低減することに成功.A3Cの後にA2Cという手法が発表.A2Cは同期処理を行い,Pythonでも実装しやすい.

\subsection{Metric learning}
距離学習.データ間の距離を適切に測ることができれば距離が近いデータ同士をまとめてクラスタリングできたり,他のデータ要素から距離が遠いデータを異常と判定することで異常検知したりと様々な応用可能.

手法

\subsubsection{Siamese Network}
2つの画像の似ている似ていないという指標となる距離を学習するCNNを利用したニューラルネットワーク.2つのCNNは重みが共有されていてそれらの出力を距離を計算するネットワークに入力する.画像の似ているかどうかを算出できるため,少ない画像を用いて画像の分類を簡易に行うことができる.

\subsubsection{Triplet Network}
3つのCNNでどちらの画像に近いかを算出するネットワーク.SiameseNetを引き合いに出しており,Triplet Networkはその欠点を改善した手法である.TripletLoss の場合は基準となる画像に対して,類似度が低い方を,もう一方よりも相対的に遠ざける形となるためコンテキストの考慮は必要なし.

\subsection{MAML (Model Agonostic Meta Learning) }
MAMLが解決いたい課題はDLの開発に必要なデータ量を削除すること.コンセプトはタスクに共通する重みを学習し,新しいモデルの学習に活用したい.そこでMAMLはメタ学習アルゴリズムであり,微分可能である以外,モデルや損失関数の具体的な形式を仮定しない.そして回帰,分類,強化学習など様々なタスクに応用できるという,Model AgnosticおよびTask Agnosticの特徴を持つ.

\subsection{GCN}
CNNのようにフィルタの畳込みをグラフ上で行うことでグラフやノードの潜在ベクトルを得る方法.グラフはノードとエッジで構成されているもの.畳込みの定義の仕方にはグラフフーリエ変換を用いるアプローチとより直接的なアプローチの2種類ある.Spectral GCNはグラフをスペクトルに分解して畳み込む.Spatial GCNはグラフを空間的に考えて畳み込む.

\subsection{Grad CAM,LIME,SHAP}
DLはブラックボックスで判断の根拠を説明できないため解釈性が必要.モデルの解釈に使われる手法は以下に示す4つある.
\begin{itemize}
        \item CAM(Class Activation Mapping)

2016のCVPRにて発表されたCNNの判断根拠可視化の手法.Global Average Pooling を使用するモデルに適応できる手法として提案された.


        \item Grad-CAM

CNNモデルに判断根拠を持たせ,モデルの予測根拠を可視化する手法.最後の畳み込み層の予測クラスの出力値に対する勾配を使用.勾配が大きいピクセルに重みを増やす.
        
        \item LIME (Local Interpretable Model-agnostic Explanations)

単純で解釈しやすいモデルを用いて,複雑なモデルを近似することで解釈を行う.

        \item SHAP(SHapley Additive exPlanations)

予測した値に対して、「それぞれの特徴変数がその予想にどのような影響を与えたか」を算出するもの.モデルのアルゴリズムの種類(決定木・線形回帰など)に限定されていないので様々な場面で使用できる点からも人気の高い手法.     \end{itemize}

\subsection{Docker}
軽量で高速に動作するコンテナ型仮想環境用のプラットフォーム.Docker利用メリットは手軽かつスピーディに―アプリケーションの実行環境を確保できる.処理速度が速い.アプリケーション実行環境の移転が簡単.

基本要素
\begin{itemize}
    \item イメージ
    \item コンテナ
    \item Dockerfile
\end{itemize}



\begin{itemize}
    \item DockerHub
    \item Docker Engine
    \item Docker CLI
    \item Docker Compose
\end{itemize}

\section{実装}

\subsection{Transformer}

\includegraphics[width=0.8\textwidth]{figs/le1.PNG}

\subsection{ResNet}

\includegraphics[width=0.8\textwidth]{figs/re2.PNG}

\includegraphics[width=0.8\textwidth]{figs/re1.PNG}

\includegraphics[width=0.8\textwidth]{figs/re3.PNG}

\subsection{BERT}

\includegraphics[width=0.8\textwidth]{figs/bert.PNG}

\includegraphics[width=0.8\textwidth]{figs/bert1.PNG}

\subsection{Grad CAM,LIME,SHAP}

\includegraphics[width=0.8\textwidth]{figs/1.PNG}


\end{document}