Deeep learnig 基本用語集


ディープラーニングについて勉強する機会があったので、よく出てくる単語をざっくりまとめてみました。 広く浅く網羅しています。


応用数学

TOPへ

平均

N個のデータxについて、全て足し上げてデータ数Nで割って得られる値のこと。

\begin{align} \bar{x} = \sum^N_{i=1} x_i \end{align}
で表される。


分散

データの平均からのずれの、平均のこと。 平均を$\bar{x}$とすると、

\begin{align} \sigma^2 = \frac{1}{N} \sum^N_{i=1} (x_i - \bar{x})^2 \end{align}
で表される。 または、ある確率分布P(X)に従う確率変数Xに対して、期待値
\begin{align} E[X]=\frac{1}{N} \sum^N_{i=1}p_i x_i \end{align}
を用いて
\begin{align} Var[X] = E[X^2] - E[X]^2 \end{align}
とも表される。


標準偏差

分散の平方根をとったものである。


条件付確率

ある事象が起こったという条件(前提)の下で別の事象が起こる確率のこと。 事象A, Bがあるとき、Aが起こってからBが起きる条件付確率をP(B|A)と表す。 これは、$P(B|A) = P(A, B) / P(A)$、で定義される。


確率分布

確率変数

ある事象に対して割り当てられている値で、その値をとる確率が決まっているもの(さいころの場合は出目が1など)である。


確率分布の定義と性質

確率変数を引数として、そのときの確率を表す関数のことである。 あり得る確率変数全体にわたって足し上げると$1$になる。


ベルヌーイ分布

1か0をとる確率変数をXとしたとき、

\begin{align} P(X=k)=p^k (1-p)^{1-k}, k=0,1 \end{align}
と表される確率分布のことである。


マルチヌーイ分布

ベルヌーイ分布を確率変数が3つ以上ある場合に拡張した確率分布のこと。

\begin{align} P(x_1, x_2, ... , x_K) = \prod^K_{k=1} p^{x_k}_k \end{align}
であらわされる。 ここで、$x_k$は一つだけが$1$で他は全て$0$である(ワンホットベクトル)。


ガウス分布(正規分布)

連続的な値をとる確率変数xに対して

\begin{align} P(x) = 1 / \sqrt{2\pi \sigma^2} \exp{- (x - \mu)^2 / 2 \sigma^2} \end{align}
と表される確率分布のこと。 ここで$\sigma$は分散、$\mu$は平均である。 また、分散とは平均からの偏差の2乗の平均のことである。


事前確率

あるデータを手に入れる前に想定していた確率のことである。


事後確率

あるデータを手に入れた後、それを条件として事前確率を再考した確率のことである。


尤度

ある前提条件に従って結果が出現する場合に、逆に観察結果からみて前提条件を推測する時の尤もらしさ(もっともらしさ)を表す数値である。


ベイズの定理

事象A, Bに対して条件付確率$P(A|B)$を考えるときに成り立つ関係式 $P(A|B) = P(B|A) P(A) / P(B)$ で表現される。ただし、$P(B) > 0$である。


情報量

ある出来事が起きた際に、その起こりにくさを表す尺度のことである。 一般的には、起こりにくいほど情報量が大きくなるように考える。 事象Aが起こる確率を使って、

\begin{align} I(A) = - \log{P(A)} \end{align}
と定義される。 ある一つの確率に対する情報量を選択情報量(自己エントロピー)、その情報量の期待値を平均情報量(シャノンエントロピー)と呼ぶ。


シャノンエントロピー(平均情報量)

ある確率変数x、確率分布P(x)に対して

\begin{align} H = - \sum_x P(x) \log{P(x)} \end{align}
で定義される。


KLダイバージェンス(Kullback-Leibler divergence)

二つの確率分布を比較するための指標として導入されるもの。 ある確率変数xに対して二つの確率分布$p(x)$, $q(x)$があるとき、KLダイバージェンスは

\begin{align} D_{KL} = \int dx p(x) \log{p(x) / q(x)} \end{align}
と定義される。 $p(x)$と$q(x)$それぞれに対応する情報量の差分の期待値の形になっている。


交差エントロピー

ある確率変数$x$に対して二つの確率分布$p(x)$, $q(x)$があるとき、交差エントロピーは

\begin{align} H(p,q) = - \sum_x p(x) \log{q(x)} \end{align}
で定義される。 $p = q$のとき、最小の値をとる性質があるので誤差関数として利用される


ワンホットベクトル

成分のうち、1つだけが1で、他は全て0であるようなベクトル。


シグモイド関数

\begin{align} f(x) = 1 / (1 + e^{-x}) \end{align}
で表される関数である。 $0 \le f(x) \le 1$ の値をとる。 xについての1階微分は
\begin{align} f'(x) = f(x) { 1 - f(x)} \end{align}
と表される。


Relu関数

\begin{align} f(x) &= x, \, (x \ge 0) \\ f(x) &= 0, \, (x < 0) \end{align}
で表される関数である。 導関数が0または1となるので、勾配消失が起こりにくく、活性化関数として使われることが多い。


Leaky Relu関数

\begin{align} f(x) &= x, \, (x \ge 0) \\ f(x) &= -0.01x, \, (x < 0) \end{align}
で表される関数である。


tanh関数

双曲線関数の一つで、

\begin{align} \tanh(x) = \sinh(x) / \cosh(x) = (e^x - e^{-x}) / (e^x + e^{-x}) \end{align}
と表される。


ソフトマックス関数

\begin{align} f(x_i) = \frac{e^{x_i}}{\sum_i e^{x_i}} ,\,\, i=1,2, ..., N \end{align}
で表される関数である。 $0 \le f(x_i) \le 1$ の値をとる。 とりうるx全体について和をとると1になるので出力結果を確率解釈できる。


機械学習

TOPへ

機械学習の定義

データ分析手法の一つである。 データに対して機械が自動で学習し、データの背後にあるパターンを示す。 ある種のタスクTと性能指標Pにおいて経験Eから学習するとは、 タスクTにおけるその性能を性能指標Pで評価した際に経験Eによってそれが改善される場合である。


機械学習の目的

コンピュータを明示的にプログラムすることなく動作させることである。


機械学習のタスク

分類

離散的な入力値をいくつかのラベル付けされたクラスに分類するタスクである。


回帰

連続的な入力値を使い、別の数値を予測することである。


転写

構造化されていないデータを変換するタスクである。 文字認識や音声認識などが該当する。


機械翻訳

ある言語のシンボルの系列を別の言語のシンボルの系列に変換するタスクである。


構造出力

入力データの構造を推定するタスクである。 自然言語処理の構文解析などが該当する。


異常検知

入力データが異常かどうかを推定するタスクである。


合成とサンプリング

訓練データと類似した新たなデータを生成するタスクである。 音声合成や画像生成などが該当する。


欠損値補完

入力データの欠損値を推定するタスクである。


ノイズ除去

入力データからノイズを除去するタスクである。 ノイズが含まれていないデータを推定する。


密度推定

入力データの確率密度(確率分布)を推定するタスクである。


機械学習の種類

教師あり学習

学習データに正解を与えた状態で学習させる方法である。 学習するデータ集合の各データの特徴量とラベルの関係を学習させる。 分類や回帰などのタスクで用いられる。


教師なし学習

学習データに正解を与えずに学習させる方法である。 学習データに含まれる規則性やパターンを学習する。 密度推定やクラスタリング、構造出力、異常検知などのタスクで用いられる。


半教師あり学習

教師あり機械学習手法と教師なし機械学習手法を組み合わせた学習方法である。 学習データのすべてに正解ラベルを与えるのではなく、一部にのみ正解ラベルを与えて学習させる。 ラベル付きのデータが少ない場合に、ラベルなしのデータを含めて学習させ、 すべてのデータにラベルを付けたうえで、通常の教師あり学習を使うといった活用法がある。


強化学習

概要

固定のデータ集合を用いるだけではなく、学習結果のフィードバックとして新たな経験を得て学習する方法である。 あるタスクにおいて、収益を最大化するような方策を得ることが目的となる。


エージェント

意思決定と行動の主体のことである。


環境

エージェントと相互作用を行う対象のことである。 エージェントからエージェントの状態と、エージェントがどんな行動をとったか、 という情報を受け取り、それに対するエージェントへの報酬送る。


方策

エージェントがどのように行動を決めるのかを表すものである。


報酬

エージェントの行動の即時的な良さを決めるものである。 問題によって具体的に決められる。


価値

報酬の期待値のこと(期待値なので即時的でない)である。 行動に対して得られる報酬の期待値は、行動価値と呼ばれる。


収益

報酬に1以下の整数(割引率)をかけて足し上げたものである。 遠い未来の報酬に対しては影響が少なくなるように割引率をかけていく。


活用

これまでの経験から、最善の行動を選ぶことである。


探索

よりよい行動を経験以外から探すことである。


ε-greedy法

εの確率で探索を行い、1-εの確率で活用を行うアルゴリズムである。


エピソード

あるタスクで、終わりがあるとき、この始まりから終わりまでの一連の流れのことである。 例えば、囲碁で相手に勝つように学習させたい場合、試合開始から試合終了までが一つのエピソードとなる。


動的計画法

ある問題に対して、 問題をいくつかの簡単な部分問題に分割し、 それぞれの結果を記録して、同じ問題に対してはその結果を参照するアルゴリズムである。


方策オフ型

自分とは別の場所で得られた経験から、自分の方策を改善する学習方法である。


方策オン型

自分で得た経験から自分の方策を改善する学習方法である。


Q値(状態行動価値)

ある状態Sで、ある行動Aをとったときの価値のことである。


TD法(Temporal Difference Method)

環境のモデルを使わずに、行動を一つ行うたびに価値関数を更新する方法である。 エピソードの終わりを待たずに、一定の時間間隔で方策の評価と改善を行う。


Sarsa

TD法の一種で、

\begin{align} Q^{\prime}_{\pi} (S_t, A_t) = Q_{\pi}(S_t, A_t) + \alpha \{ R_t + \gamma Q_{\pi}(S_{t+1}, A_{t+1}) - Q_{\pi}(S_t, A_t) \} \end{align}
という更新式で状態行動価値$Q$をを更新していくアルゴリズムである。 ここで、$S_t$、$A_t$、$R_t$はそれぞれ時刻tでのエージェントの状態と行動、報酬である。 また、$\alpha$と$\gamma$はパラメータで後者は割引率(1以下の整数)である。 また、ε-greedy法で方策に従って更新を行う。


Q学習

方策オフ型のTD法の一種で、max関数によって行動価値を学習するアルゴリズムである。 具体的には

\begin{align} Q^{\prime}_{\pi} (S_t, A_t) = Q_{\pi}(S_t, A_t) + \alpha \{ R_t + \gamma \rm{max}_a Q_{\pi}(S_{t+1}, a) - Q_{\pi}(S_t, A_t) \} \end{align}
という更新式で学習を進める。 ここでaは行動価値$Q$が最大となるように選ばれる行動である。


方策勾配法

概要

方策をニューラルネットワークでモデル化し、勾配を使って方策を最適化する方法である。


方策勾配定理

累積報酬の期待値$J(\theta)$を最大化するような方策を得たいとき、 $J$のパラメータ$\theta$に対する勾配を使って

\begin{align} \theta = \theta + \alpha \nabla_{\theta} J(\theta) \end{align}
によって更新を行いたいため、$\nabla_{\theta} J(\theta)$ を求める必要がある。 この$\nabla_{\theta} J(\theta)$を求める方程式が方策勾配定理と呼ばれ、
\begin{align} \nabla_{\theta} J(\theta) = E_{\pi_\theta} \left[ \sum^T_{t=1} Q^{\pi_\theta}(s_t, a_t) \nabla_{\theta} \log{(\pi_{\theta}(a_t|s_t))} \right] \end{align}
と表される。 ここで、$\pi$は方策、$Q$は行動価値関数である。


REINFORCE

目的関数の勾配を計算する際に、現在から未来までの報酬のみを使って計算する方法である。 これによって過去の報酬によるノイズをなくして学習を効率化することができる。


価値反復法

「方策は、価値が最大となる行動を選択する」という仮定のもとで、 価値を繰り返し更新しながら価値を推定する方法である。


ゼロショット学習

あるものの形状や細かい特徴を学習しておくことで、今までの学習データにない未知の対象を識別できるようにする技術である。


ロジスティック回帰

いくつかの要因(説明変数)から2値の結果(目的変数)が起こる確率を説明・予測することができる統計手法である。


サポートベクトルマシン(SVM)

サポートベクトルという概念を使った教師あり学習アルゴリズムのことである。 多くの分類と回帰の問題に使用される。 ここで、サポートベクトルとは、データを分割する境界線(または超平面)に最も近いデータ点である。 目的は、あるクラスのデータ点を、別のクラスのデータ点から、可能な限り分離する境界線(超平面)を見つけることである。 クラス同士の境界を探す際に、すべてのデータを参照するのではなく、 境界に最も近いサポートベクトルに注目して、サポートベクトルと境界の距離を最大化することで効率化を図っている。 データが大量にある場合には時間がかかるので向いていない。 データが線形分離可能であることを前提としたハードマージンSVMと、 線形分離不可能であることを前提としたソフトマージンSVMの2種類がある。


カーネル法

データの分類を行うために分類するデータを高次の特徴量空間へ写像する方法である。


k-means法

データを適当なクラスタに分けた後、クラスタの平均(重心)を用いて、 うまい具合にデータがわかれるように調整させていく分類アルゴリズムである。 データ全体をいくつのクラスに分けるのか、は初期パラメータで決まっているので、 パラメータの選び方によってはうまく学習できないという問題がある。


k-means++法

k-meansの初期パラメータ依存性の問題を解消したアルゴリズムである。 初期のクラスタ中心点をデータ点間の距離に基づいて確率的に決定することで、初期値依存問題の解決を試みている。


機械学習における誤差

偏り誤差(バイアス)

モデルの表現力(パラメータ数や学習時間が関係する)が不足していることによって生じる誤差である。 バイアスが大きいときは、アンダーフィッティング状態であるといわれる。 この状態では訓練データと検証データの両方で精度が低くなっている。


分散誤差(バリアンス)

訓練データの選び方によって生じる誤差である。 バリアンスが大きいときは、オーバーフィッティング状態であるといわれる。 この状態では訓練データに適合しすぎており、検証データに対する精度が低くなっている。


ノイズ誤差

データの測定誤差などによって生じる誤差である。


コスト関数(目的関数)

最適化問題において,最大化あるいは最小化したい関数のことである。


過剰適合(過学習、オーバーフィッティング)

学習データに対してあまりに忠実に適合しすぎて、 本来データが示唆する傾向から大きく外れてしまう現象である。 学習データの規模に対して、あまりに多くのパラメータを持つ詳細なモデルを使うと外れ値やノイズなどを学習してしまうために起こる。 学習データに対しては高い精度を示すが、新しいデータに対しては精度が下がるという特徴がある。 汎化性能を獲得できていない状況である。 これを避けるためには正則化などでパラメータ数を調整する必要がある。


過少適合(アンダーフィッテイング)

学習データから特徴量をうまく抽出することができない現象である。 機械学習モデルがデータセットの特徴量とターゲット変数の関係を正確に把握できるほど十分に複雑でない場合に発生する。 学習データに対しても精度が低い状態である。 これを改善するには、より複雑なモデルを用意するか、パラメータ数を増やす工夫が必要である。


次元の呪い

入力データの特徴量の次元数が増えるほど、 高い精度のモデルを作るために必要なデータ量が指数関数的に増えてしまうことである。


ハイパーパラメータの選択

ハイパーパラメータ

機械学習アルゴリズムの挙動を設定するパラメータで、人が外から与えることが一般的である。


グリッドサーチ

与えられたハイパーパラメータ候補の値の全パターンのモデル構築を行う手法である。 調節する値がある程度決まっていて、ハイパーパラメータの数が少ないときには有効だが、 パラメータ数が多いと学習コストが高くなるので注意が必要である。


ランダムサーチ

候補の値をランダムに組み合わせたモデル訓練を行いハイパーパラメータを検証する方法である。 値の候補やパラメータがたくさんあっても使えるが、ランダムなのでうまくいくとは限らない。


ベイズ最適化

事前分布と事後分布と呼ばれるベイズ統計の概念を使用してハイパーパラメータの最適化を行う方法である。 まず適当な値を入れて結果を確認し(探索)、 その結果をもとに予測精度が高まるようなパラメータ値を予測して更新する(活用)。 この操作の繰り返しによって最適な値に近づけていく。


バッチ学習

すべての学習データを使って学習する方法である。


ミニバッチ学習

学習データをいくつかのグループに分割して学習する方法である。


オンライン学習

データをランダムに1件ずつ使って学習する方法である。


ホールドアウト法

学習に使うデータを訓練用データと検証用データにわけて、学習後のモデルの精度を 検証用データによって測る方法である。


交差検証法

データを3つ以上に分け、そのうちの一つを検証データとしてモデルの精度を計算する方法である。 検証データを入れ替えながら学習を行い、すべての結果の平均で最終的な精度を決める。


最尤推定

与えられたデータから、それが従う確率分布の外形を決めるパラメータを予測する方法である。


勾配降下法

最急降下法

目的関数の傾き(一階微分)のみから、関数の最小値を探索する連続最適化問題の勾配法のアルゴリズムの一つである。


確率勾配降下法(SGD, Stochastic Gradient Descent)

ランダムに取り出したデータを使って勾配を計算し、パラメータを更新していく方法である。 パラメータを$w$、学習率を$\eta$、誤差関数を$L$とすると、更新式は以下で表される。

\begin{align} w_{t+1} = w_t - \eta \frac{\partial L}{\partial w_t} \end{align}


momentum法

移動平均を使って極小値を求めるときの振動を抑えた方法である。 新しくパラメータ\alphaを導入して、以下のようにあらわされる。

\begin{align} v_{t+1} &= \alpha v_t - \eta \frac{\partial L}{\partial w_t} \\ w_{t+1} &= w_t + v_{t+1} \end{align}
摩擦項$\alpha v_t$が入ったことがSGDとの違いであるともいえる。


Adagrad法

過去の勾配の2乗和を使ってパラメータを更新する方法である。 パラメータの要素ごとに更新の度合いを調整する。 勾配の2乗和を蓄積してその平方根で学習率を割ることで学習率を調整するので、 学習率の値が小さくなりすぎて勾配消失が起こることがある。 過去の勾配の2乗を足し上げたものを$h$、発散防止の微小パラメータを$\epsilon$とすると更新式は以下のように表される。

\begin{align} h_{t+1} &= h_t + \frac{\partial L}{\partial w_t} \bigodot \frac{\partial L}{\partial w_t} \\ w_{t+1} &= w_t - \frac{\eta}{\epsilon + h_{t+1}} \bigodot \frac{\partial L}{\partial w_t} \end{align}
2番目の式で、$\frac{\eta}{\epsilon + h_{t+1}}$が変化する学習率である。


RMSProp法

更新ごとに学習率を変えて、振動を抑えることで素早く極小値を求める方法である。 移動指数平均を使うことで過去の古い勾配の情報は無視することができ、Adagradの勾配消失問題を軽減した。 パラメータ\rhoを導入して、更新式は以下のように表される。

\begin{align} h_{t+1} &= \rho h_t + (1 -\rho)\frac{\partial L}{\partial w_t} \bigodot \frac{\partial L}{\partial w_t} \\ w_{t+1} &= w_t - \frac{\eta}{\epsilon + h_{t+1}} \bigodot \frac{\partial L}{\partial w_t} \end{align}
1番目の式で、$\rho h_t$の部分は過去の2乗勾配に1以下の正の数を何度もかけるので、過去からの影響が小さくなる。


Adam法

RMSPropとmomentumを合わせた方法である。 $t$を現在時刻、$L$を損失関数、$\theta_t$を更新対象のパラメータ、 $m_t$を1次のモーメント、$v_t$を2次のモーメント、 $\rho_1$と$\rho_2$を1次と2次のモーメントの減衰率、 $\tilde{m}_t$と$\tilde{v}_t$をバイアス修正された1次と2次のモーメント、 $\eta$を学習率、$\epsilon$を発散防止のための微少量、 とすると更新式は以下で表される。

\begin{align} m_{t+1} &= \rho_1 m_t + (1-\rho_1) \frac{\partial L}{\partial \theta_t} \\ v_{t+1} &= \rho_2 v_t + (1-\rho_2) \frac{\partial L}{\partial \theta_t} \bigodot \frac{\partial L}{\partial \theta_t} \\ \tilde{m}_{t+1} &= m_{t+1} / (1-\rho_1^t) \\ \tilde{v}_{t+1} &= v_{t+1} / (1\rho_2^t) \\ \theta_{t+1} &= \theta_t - \frac{\eta} {\sqrt{\tilde{v}_{t+1}} + \epsilon} \bigodot \tilde{m}_{t+1} \end{align}
最後の式で、 $\frac{\eta}{\sqrt{\tilde{v}_{t+1}}}$が変化する学習率、 最初の式で$\rho_1 m_t$が摩擦項になっている。 3番目と4番目の式で、 $1$より小さいパラメータの$t$乗を$1$から引いたもので各パラメータを割っているので、 初期の学習率ほど大きく扱い、時間が進むにつれてパラメーラの効果が小さくなっていく。


正規化(Normalization)

概要

データのスケール(単位)を扱いやすいものに整えることである。 画像処理タスクの学習で、学習を効率的に進めるために用いられる。 データの最大値が1、最小値が0となるように値を整理する。 そのためにデータの最小値からのずれを最大値と最小値の差で割るという形で行われる。


標準化

データと平均との差を標準偏差でわる操作のこと。 これによって平均が0、分散が1になる。 後述するBatch Normalizationなどでは正規化(Normalization)という名前がついているが、 実際に行っている操作は標準化であるので注意が必要である。


Batch Normalization

各レイヤーへのインプットxについて、 ミニバッチごとに平均、分散を求め、インプットを正規化する方法である。 各特徴量の平均をゼロ、標準偏差を1にし、 バッチごとのデータの分布の偏りやスケールの影響を排除することを目的として行われる。 ミニバッチごとに平均、分散を求めるので、ミニバッチが小さいと計算が不安定になる。 バッチ全体に対して、チャンネルごとに正規化するともいえる。


Layer Normalization

Batch Normalizationの派生版であり、 1つのサンプルにおける各レイヤーの隠れ層の値の平均、分散で正規化する方法である。 層ごとにチャンネル全体にわたって平均、分散を計算するともいえる。


Instance Normalization

インスタンス(特定のサンプル)ごとに平均・分散を計算する方法である。 1つのチャンネルの1つのチャネルに対して正規化を行うともいえる。


Group Normalization

チャンネルを G 個にグルーピングして、 Layer NormalizationとInstance Normalizationの中間的な処理を行うことで正規化する方法である。 チャンネル全体を1つのグループにするとLayer Normalization、 チャンネル全体をチャンネル数と同じ数のグループに分ければInstance Normalization と同じになる。


正則化

概要

正則化とは、過学習対策の手法であり、学習データへの過剰フィッティングに伴うモデル複雑化を抑制しながら、 より単純な(低い次元の)モデルとして学習データを表現できるようにすることである。


ドロップアウト

ニューラルネットワークを学習する際に、 ある更新で層の中のノードのうちのいくつかをランダムに無効にして学習を行うことである。 毎回異なるニューラルネットワークを学習することになるため汎化性能が上がる。


L1正則化

目的関数に重みの絶対値の和を加える方法(重みベクトルのL1ノルム)である。 重みがゼロになりやすく、余分な説明変数を省く目的でつかわれることが多い。 L1正則化を使った線形回帰をラッソ回帰という。


L2正則化

目的関数に重みの2乗和を加える正則化手法(重みベクトルのL2ノルム)である。 目的関数の最小化に対して重要でない重みパラメータの影響を少なくする効果があり、 モデルの過学習を防いで汎化性能を高めるために用いられることが多い。 L2正則化を使った線形回帰をリッジ回帰という。 また、L1とL2正則化を両方使った線形回帰をエラスティックネットという。


データ拡張

学習用の画像データに対して「変換」を施すことでデータを水増しする方法である。 データ数が増えるので学習後モデルの汎化性能が上がる可能性がある。


Random Flip

ランダムに画像の上下左右を反転する。


Erase

画像の一部をランダムに消去する。


Crop

画像の一部を切り抜く。


Contrast

画像のコントラストを変える。


Brightness

画像の明るさを変える。


Rotate

画像を回転させる。


MixUp

二つの画像を混ぜて、新しい画像のデータセットを作る。


ノイズ注入

学習データにあえてノイズを混ぜることで、モデルの汎化性能を上げる方法である。


マルチタスク学習

目的とするタスクに関係がある複数のタスクに対して、一つのモデルで同時に学習を行わせることで、 汎化性能や精度を上げる方法である。


早期終了

学習時にモデルが学習データに過剰に適合し、過学習が起こる前に学習を終了させる方法である。 検証用のデータに対する誤差が低いときのモデルを結果として抽出することで高い汎化性能を得ることが目的である。


スパースモデリング

入力データに含まれる本質的な情報はごくわずかしかない、という仮定に基づき、 入力から出力に対して重要な部分のみを抽出することでリソース節約や正則化を行う方法である。


アンサンブル学習

複数のモデルを合わせて1つのモデルを作る方法である。 もともと精度が低いモデルでも、合わせて使うことで汎化性能や精度の向上が見込める。


バギング(Bootstrap Aggregating)

学習用データセットからランダムに抽出されたデータの組み合わせを使ってアンサンブル学習させることで、 正則化の効果を得る方法である。


ブースティング(Boosting)

いくつかのモデルの内一つを基本モデルとして先に学習させ、 次のモデルでの学習では、前のモデルで間違えていた予測に注目して重みを改善する、 というプロセスを繰り返す方法である。 最終的にすべてモデルを使って予測をする。


スタッキング(Stacking)

アンサンブルの手法の一つであり、モデルを積み上げて精度を上げる方法である。 複数のモデルに同じデータで学習させ、その結果から特徴量を抽出するメタモデルを学習させる。


勾配消失問題

目的関数の勾配が0になってしまい、勾配法によって正常に学習を進めることができなくなる問題である。


勾配爆発問題

目的関数の勾配が発散してしまい、コンピュータで数値的に処理できなくなってしまう問題である。 この場合も勾配法によって正常に学習を進めることができなくなる。


勾配クリッピング

勾配の上限値を指定しておき、勾配爆発を抑える手法である。


混同行列

予測とその予想の正解かどうかの組み分けを表にまとめたものである。 モデルの性能評価に使われることが多い。 真陽性(True Positive, TP)、偽陰性(False Negative, FN)、 偽陽性(False Positive, FP)、真陰性(True Negative, TN)、 に対して、

\begin{align} 正解率(\rm{accuracy}) &= (\rm{TP} + \rm{TN}) / (\rm{TP} + \rm{FP} + \rm{TN} + \rm{FN}) \\ 適合率(\rm{precision}) &= \rm{TP} / (\rm{TP} + \rm{FP}) \\ 再現率(\rm{recall}) &= \rm{TP} / (\rm{TP} + \rm{FN}) \\ \rm{F}値(\rm{F-measure}) &= 2 * \rm{precision} * \rm{recall} /(\rm{precision} + \rm{recall}) \end{align}
が評価指標として用いられる。


深層学習

TOPへ

ニューラルネットワーク

脳の神経回路の一部を模した数理モデル、または、パーセプトロンを複数組み合わせたものの総称である。 機械学習で使われる。 入力層、隠れ層、出力層に分けられ、入力から出力方向にデータが流れるニューラルネットワークは、 順伝搬型ニューラルネット(Feed Forward Neural Network, FFNN)と呼ばれる。


パーセプトロン

ニューラルネットワークの一種で、形式ニューロンを複数用いてネットワーク状に接続したものである。 入力層と出力層だけのものを単純パーセプトロン、一層以上の隠れ層を持つものを多層パーセプトロンという。


ディープラーニング

ニューラルネットワークを多層化したものを用いた機械学習のことである。


フォワードプロパゲーション

ニューラルネットワークで入力層から出力層に向かう順方向のデータ伝搬のことである。


バックプロパゲーション

出力層から入力層に向かう逆方向のデータ伝搬のことである。 学習時に計算した誤差をニューラルネットワーク全体に伝搬させて、各ノードのパラメータを更新する(誤差逆伝搬法)。


計算グラフ

パーセプトロンでの計算の過程をグラフで可視化したものである。 誤差逆伝搬法(バックプロパゲーション)の理解などに使われる。


畳み込みニューラルネットワーク(CNN)

概要

通常の全結合層のみのニューラルネットワークでは、入力値を1次元の配列として扱うため、 入力データが2次元以上のデータ(画像など)だった場合、そのデータの特徴をうまく学習できない可能性がある。 そこで、2次元以上のデータをそのまま使って学習するように工夫されたのが畳み込みニューラルネットワークである。 人間が持っている視覚野の神経細胞の動きを模倣して作られた。


畳み込み層

畳み込みニューラルネットでフィルタを用いて元のデータの特徴を抽出する部分である。 視覚野で、ある特定の形状(フィルタに対応)に反応する細胞の動きを模倣している。


プーリング層

対応する複数の入力データを1つのデータに集約する部分である。 例えば、最大値プーリングと呼ばれる方法では、入力データのうち1番大きな値のみが次の層へ渡される。 視覚野で、形状の空間的なずれを吸収する細胞の働きを模倣している。


全結合層

前の層と次の層のニューロンのつなぎ方をすべて網羅するようにして構成される層のことである。


グループ畳み込み

複数のチャンネルを1つのグループとみなし、グループごとにチャンネル間の関係性をとることで、 チャンネル方向のパラメータ数を削減する軽量な畳み込みのことである。


デプスワイズ畳み込み

1つの特徴量に対応するカーネルで、入力チャンネルごとに空間方向に畳み込みを行うことである。 同じ出力チャンネル数をもつ普通の畳み込みと比べてパラメータ数が、1/(出力チャンネル数)、となる。 この畳み込みでは入力チャンネルと出力チャンネルは同じ数であるが、空間方向(画像の高さと幅など)は入力サイズとパディング、ストライド幅などによって変化する。


ポイントワイズ畳み込み

チャンネル方向のみの相関をとるフィルタサイズ1×1の畳み込みである。 データの空間方向の大きさは変化しないが、チャンネル数が変化する。 見たい特徴量の数に対応する1×1のフィルタで畳み込む。 普通の畳み込みと比べて、パラメータ数が、1/(フィルタサイズ)^2、となる。 デプスワイズ畳み込みとポイントワイズ畳み込みを続けて行うことで、 通常の畳み込みと同じ程度の精度を維持しつつ、 計算を効率化することができることが知られている(Depthwise Separable畳み込み)。


回帰結合型ニューラルネットワーク(RNN, Recurrent Neural Network)

RNNの概要

全結合や畳み込みのニューラルネットワークは、時間順序方向にパラメータの共有を行っていないので、 時系列データを学習する能力が低いことが知られていた。 また、このような従来のニューラルネットワークでは出力を一斉に生成するため、 ある一つのノードでの出力を見てから別の出力を出すといったこともできなかった。 これらの問題を、 あるニューラルネットでの出力を別のニューラルネット(パラメータは同じ)での入力として使うことで解決したのがRNNである。 ニューラルネットでの計算を繰り返すようにして学習を進めるので、勾配消失が起こりやすく、 過去の情報を保持しにくいという問題がある。 また、RNNは時刻ごとにデータを処理するので、重み衝突問題もある。 重み衝突問題とは、ある再帰セルへの入力の重みを更新する際に、現在は重要でないが未来では重要になるというデータがあった場合、重みを大きくすべきか小さくすべきか決められなくなることである。


教師強制

RNNで訓練の際に1つ前の時刻の正解データを現時点の入力として用いる手法である。 教師データがあることにより、学習の収束が早くなる可能性があるが、 教師データがない場合は出力に誤差が大きくなる。


seq2seq

エンコーダとデコーダにRNNを用いて時系列データを扱えるモデルで、文字列から特徴量を抽出し、 デコーダで文脈からタスクに応じた単語を出力できる。


双方向RNN

過去から未来だけでなく、未来から過去への時間順序も考慮したRNNのことである。


RNN Encoder-Decoder

時系列データをエンコーダで符号化し、その出力をエンコーダで処理して出力させる方法である。 これによって入力データと出力データの長さが異なる場合にもうまく適用できるようになった。


LSTM(Logn Short Term Memory network)

長期的な依存関係を学習することができるRNNの一種である。 3つのゲートと、記憶セル(Constant Error Carousel, CEC)で構成される。 ゲートは、 取り出した記憶について各要素を弱める度合いを決める出力ゲート、 記憶セルがもつ情報による影響を弱める度合いを決める忘却ゲート、 記憶セルに追加されるデータの各要素を弱める度合いを決める入力ゲートがある。 記憶セルは過去の誤差情報を記憶する部分である。 記憶セルによって勾配消失問題を改善し、入力・出力ゲートによって重み衝突問題を改善している。 通常は全てのゲートで前時刻のCECの値を使うが、 入力と忘却ゲートで前時刻のCECの値を用いて、 出力ゲートでは現時刻のCECの値を用いる場合もある(のぞき穴結合)。


GRU(Gated Recurrent Unit)

LSTMをより簡略化して、計算効率化と軽量化を図ったモデルである。 リセットゲートと更新ゲートという機構を含み、LSTMの入力、出力、忘却ゲートの代わりを行う。


識別モデル

クラス分類問題で、入力データを$x$、クラスを$C_k, \, k=1,2,...,n$としたときの事後確率$P(C_k|x)$を直接に計算する統計モデルである。 ロジスティック回帰や普通のニューラルネットによる分類などが含まれる。


生成モデル

概要

クラス分類問題で、入力データを$x$、クラスを$C_k, \, k=1,2,...,n$としたときの事後確率$P(C_k|x)$を ベイズの定理から計算する統計モデル。 画像分類の場合、モデルを訓練したデータ集合に含まれるデータを生成できる。


オートエンコーダ

ニューラルネットワークの一つで、入力されたデータを一度圧縮し、 重要な特徴量だけを残した後、再度もとの次元に復元処理をするアルゴリズムを持つ。 一般的に、オートエンコーダを利用して勾配消失や過学習を避けることができる。 入力データを圧縮して潜在変数に変換する部分をエンコーダ、潜在変数から元のデータを復元する部分をデコーダという。 潜在変数とは、直接には観測されないが、他の値を通して推定することができる変数のこと。 目的関数は入出力の差で表される。


VAE(Variational Auto Encoder)

ディープラーニングによる生成モデルであり、変分ベイズ推定法を用いたオートエンコーダである。 前提として、入力データは、 潜在的な特徴として入力データに含まれる、潜在変数からランダムに生成されている、と考えている。 この潜在変数を知ることが大きな目標である。 そのため、入力データの背後に存在する潜在変数zに対して、ある確率分布を仮定してzの値をサンプリングし、 逆にその潜在変数から元のデータに近いデータを生成することを目指す。 なぜなら、潜在変数から元のデータを復元することができれば、 元のデータの特徴を正しく抽出できていることが示せるからである。 エンコーダ部分で潜在変数の平均と分散を学習して、 それらの値をもとにサンプリングされた潜在変数をデコーダで元のデータに復元する。 潜在変数の事前分布、事後分布に正規分布を仮定することが多い(平均と分散がそれぞれ同じ値を持つとする)。 画像データの場合、GANに比べて解像度が低いという特徴がある。 学習によって入力値から潜在変数を得る確率分布を得た後、 その分布から実際に潜在変数をサンプリングしてデコーダに渡す必要があるが、 この部分の処理が微分不可能であり、逆誤差伝搬によって誤差を入力側に伝えることができない問題があった。 そこで、潜在変数に対する分布をガウス分布と仮定したときの平均$\mu$と分散$\sigma$の値を使って $Z = \mu + \epsilon \sigma$ とすることで、この問題を回避している(reparametrization trick)。 ここで、$Z$が潜在変数、$\mu$がガウス分布の平均値、$\sigma$が分散、$\epsilon$は平均0分散$1$のガウス分布に従うパラメータである。


VQ-VAE

潜在変数の事前分布、事後分布にカテゴリカル分布(マルチヌーイ分布)を仮定したVAEのことである。 潜在変数を離散的なk個のベクトルを使って表現している。 エンコーダーの出力を離散値とするのではなく、エンコーダの出力値はあくまで連続値。その連続値をK種類の埋め込み表現にマッピングすることで離散化を実現する。 潜在変数が離散値なので、reparametrization trickが使えない。 そこでVQ-VAEでは、勾配を計算する際に、埋め込み表現へのマッピングの箇所を跨いで、デコーダ側の勾配をコピーしてエンコーダ側に逆伝播させる。


GAN(Generative Advesarial Networks)

教師なし学習の手法の一種で、 GeneratorとDiscriminatorという二つのネットワークをを用いて、 互いに競わせるように学習を進め、本物に限りなく近いデータを生成する方法である。 Generatorはノイズと呼ばれる潜在変数から疑似的な入力データを生成し、 Discriminatorは本物のデータと生成された疑似入力データを比較して、どちらが本物かを判断する。 最終的にDiscriminatorが判断を間違うようになるまで学習させる。 高精度な画像を生成することができるが、最頻値に分布が偏り、同じ画像ばかり生成してしまうという欠点がある。 また、目的関数に二つの確率密度間の距離を表すJensen-Shannon divergenceを用いているが、勾配消失が起きやすいという問題がある。


DCGAN(Deep Convolutional GAN)

GANの改良版で、 GANとの違いはGeneratorとDiscriminatorそれぞれのネットワークに、 畳み込み層と転置畳み込み層を使用しているところである。 転置畳み込みでは、特徴マップを適当な値で埋めるなどして拡大してから畳み込みを行う。 また、全結合層の代わりにGlobal average poolingを用いている。 これは、前層の出力で得られた各特徴マップ全体に対する平均プーリングのことである。 これによって、出力は1×1×(channel数)となり、学習が必要なパラメータを減らすことができる。


CGAN(Conditional-GAN)

GANの派生で、生成する画像を明示的にかき分けるために、訓練時に教師データのラベルを用いる方法である。


pix2pix

CGANを使って、画像から別の画像を生成するアルゴリズムである。 条件ベクトルの代わりに条件画像を使う。 訓練データとして用意する画像のペアが、互いに形状が似たきれいなものでないと、 学習がうまくいかないという問題がある。


CycleGAN

GANを用いて、画像から別の画像を生成するモデルである。 画像を一回変換した後、さらに逆変換させて、元の画像を再現させるように学習する。 それぞれの変換に対してGeneratorとDiscriminatorをもつ(合計で2つずつ)。 変換したいもの同士の画像が形や輪郭などが揃っていなくても、 データの量さえ十分であれば、うまく変換できるモデルを訓練できるのでpix2pixよりも汎用性が高い。


SimGAN

シミュレータなどで生成した画像を変換し、より現実の画像へと近づける生成モデルである。 生成画像と実際の画像とのずれに対してself-regularization lossという概念を導入してペナルティを課し、 これが小さくなるように学習することで実際の画像に近づけていく。


WGAN

目的関数にJensen-Shannon divergenceではなく、Wasserstein distanceを使うGANの改良版。 これによって勾配消失が起こりにくくなった。


infoGAN

Generatorに入力するノイズを潜在変数とそれ以外の情報に分けて学習させるモデルである。 これらの相互情報量が最大になるように学習を進める。


LAPGAN

CNNを用いたGANの派生である。 まず低解像度の画像を生成し、段階的に解像度を上げて、最終的に高解像度の画像を生成することを目指す。


深層強化学習

DQN(Deep Q Network)

Q学習とニューラルネットワークを組み合わせた学習方法である。 学習を安定させるために、経験再生とターゲットネットワークと呼ばれる技術を使っていることが特徴。 経験再生は、 エージェントが経験したデータを記憶しておいて、ランダムに取り出して学習させる方法で、 これによって学習の偏りを防ぐことができる。 具体的には、現在のエージェントの状態と行動、報酬、遷移先の状態を経験として保存しておく。 ターゲットネットワークは、 Q関数を表すオリジナルのネットワークqnetと、もう一つ同じ構造のネットワークtarget_netを用意し、 qnetは普通に学習させつつ、target_netはqnetと定期的に重みを共有するようにする方法。 これによって教師ラベルにあたるデータが変動してしまうことを防ぐことができる。


AlphaGo

Google DeepMindによって開発されたコンピュータ囲碁プログラムである。 2015年に人間のプロ将棋師に勝ち、深層学習が注目されるきっかけとなった。 盤面を評価する価値ネットワークと行動を選択するための方策ネットワークによって構成されており、 どちらもCNNが使われている。


Actor-Critic

行動を選択するネットワークとQ値を求めるネットワークを完全に切り分けて学習する方法である。 Actorは行動を決める方策と行動優先度からなり、その行動の結果をCriticが状態価値関数の変化として観測する。 この観測結果をActorに送り、Actorはそれをもとに方策を更新する、という形で学習が進むである。 価値反復法の考え方と、方策勾配法の考え方を両方使っているところが特徴である。


A3C(Asynchronous, Advantage, Actor-Critic)

Actor-Critic系の強化学習法の一つである。 特徴は複数のエージェントを分散させて並列に探索を行い、 非同期に方策パラメータを更新すること(Asynchronous)。 また、複数ステップ先を考慮して勾配による更新を行うこと(Advantage)。 これにより、学習の効率化と安定化を実現している。


画像認識

AlexNet

8層で構成されるCNNモデルの一つである。 最初の5層が畳み込み層とプーリング層で、それ以外の3つが全結合層となっている。 プーリングは最大値プーリングが使われている。 2012年にILSVRCという画像認識のコンテストで優勝し、CNNが広く注目されるきっかけとなった。


VGG16

深さが16層のCNNモデルの一つである。 3×3の小さなフィルターによる畳み込みを連続で行うことが特徴で、シンプルな構造で高い精度が出せる。


GoogleNet

さらにディープになった、深さが22層のCNNモデルである。 深さだけでなく横方向の広がりも拡張されている点が特徴である。 また、インセプションモジュールと呼ばれる畳み込みモジュールを用いていることも特徴の一つである。 サイズの異なるフィルターを複数用意して並列に計算し、その結果を結合するように学習を進める。 また、1×1のフィルターを多用することで、パラメータの削減や処理の高速化を実現している。 学習の際、ネットワークの途中から分岐させたサブネットワークにおいてもクラス分類を行い,auxiliary lossを追加することが行われている. これにより,ネットワークの中間層に直接誤差を伝搬させることで、勾配消失を防ぐとともにネットワークの正則化を実現している。


ResNet

100層以上に層を深くすることに成功したCNNのモデルである。 このモデルの登場以前は、層を深くすることは認識精度の向上に役立つことが分かっていたが、 深くしすぎると逆に精度が落ちることもよく知られていた。 この問題を解決するために、 入力データを畳み込み層をスキップして伝えるスキップ構造が導入されている(スキップコネクション)。 これによって層の数に比例して精度が上がるようになった。


DenseNet

ResNetの考え方を拡張したモデルの一つである。 複数の畳み込み層からなるモジュール内で、 モジュール内のあらゆる出力をモジュール内のあらゆる層の入力にバイパスするDenseBlockとよばれる処理を導入している。 これはResNetで導入されたスキップコネクションの発展版であるといえる。 1つのDenseBlockでどの程度フィルター数を増やすかを表す成長率というパラメータを用意する。


WideResNet

画像認識モデルResNetを改良したモデルである。 チャンネル数を増やしてニューラルねとワークの幅を広げたりドロップアウトを実装して、 層の数が1000層以上でもよい精度を出せるようになっている。


im2col

im2col は 4次元配列 (ミニバッチサイズ、チャンネル数、縦幅、横幅)を、 2次元の行列 (画像枚数*畳み込み回数、フィルターの要素数)に変換し、 フィルターも行列(フィルターの要素数、フィルターの枚数)に変換することで、 畳み込み演算をただの行列積の計算にし、処理速度を劇的に改善するアルゴリズムである。


EfficientNet

CNNにおけるネットワークの深さ(畳み込みブロック数)や広さ(フィルタ数)、 解像度(画像サイズがベースの場合と比べて何倍か)が モデルの性能にどう影響を及ぼすかを調べ、 Compound Coefficient(複合係数) というものを導入することで性能を上げたモデルである。 従来のモデルよりも軽量で、精度も上がっている。 モデルのアーキテクチャを変えるのではなく、用意したモデルに対して、 深さと広さ、解像度のみを定数倍でスケーリングして変化させることで、 より良い精度のモデルを実現する。 よって、ベースとなるモデルは精度が良いものを選んでおくほうが良い。 深さ$d$、広さ$w$、解像度$r$とすると、Compound Coefficientを\phiとして、 $d=\alpha^{\phi}$、$w=\beta^{\phi}$、$r=\gamma^{\phi}$ のようにスケーリングする。 ここで$\alpha$、$\beta$、$\gamma$は $\alpha \beta^2 \gamma^2 \simeq 2$、 $\alpha, \, \beta, \, \gamma \ge 1$ を満たすようにグリッドサーチで決められる。 これら$d$、$w$、$r$はそれぞれ、ベースとなるモデルの畳み込みブロック数、 フィルタ数、入力画像の縦横の長さにかけられる。


YOLO(You Look Only Onse)

オブジェクト検出アルゴリズムの一つである。 信頼度スコア(Confidence score)によって、どの領域に対象とするクラスの物体が正確に検出されているかを判断する。 ここで、信頼度スコアは、「分割された領域(BoundingBox)に物体が入っていて、正確に領域を囲えているかの正確さ」と 「各クラスの予測確率(画像に写っている物体が特定のクラスに属している可能性)」を意味する指標のこと。 他の物体検出モデルと違って、一度画像を見るだけで検出を行えるため、高速である。


SSD(Single Shot MultiBox Detector)

1度のCNN演算で物体の「領域候補検出」と「クラス分類」の両方を行う方法である。 これにより物体検出処理の高速化を可能にした。 YOLOとの違いは、 YOLOが元画像を等間隔に区切ったgrid cellによりバウンディングボックスを推定するのに対し、 SSDでは、特徴マップに対してデフォルトボックスと呼ばれる矩形パターンを配置することで、 バウンディングボックスを推定する点である。


U-Net

生物医学のために開発された、セマンティックセグメンテーション用のモデルである。 このモデルの特徴はエンコーダの特徴マップをデコーダの特徴マップに連結させることである。 エンコーダで生成された特徴マップを複製し(Copy)、切り出し(Crop)、 そしてデコーダの特徴マップに連結(Concatenate)する。


SegNet

semantic segmentationように作られたモデルの一つである。 エンコーダとデコーダを持ち、入力画像に対してpixel単位でどの物体クラスに属するかのラベルを出力する。 プーリング層で縮小した特徴マップを再度拡大するアップサンプリングという操作を行うことで、 出力の画像がきれいになるように工夫されている。 プーリング後の特徴マップのある点が元の画像内でどこからきているかという情報を保存しておくことで、 アップサンプリングを正確に行う。


R-CNN(Regional CNN)

畳み込みを用いた物体検出モデルの一つである。 物体がありそうな領域(region-of-interest, ROI)をいくつか提案してから、 それらのみに対して計算をすることで学習コストを減らしている(Region Proposal)。 提案した領域をCNNで処理して特徴量ベクトルに変換した後で、SVMによるクラス分類を行うことで、 画像に含まれる物体を検出する。 候補領域の選定には、selective searchというアルゴリズムが使われているが、 ディープラーニング登場前から存在する古い手法で、計算効率が良くないことが知られていた。


Fast R-CNN

R-CNNの改良版である。 SVMによるクラス分類を廃止して、CNNによる処理で置き換えることによって処理を高速化している。 このCNNで、ROI PoolingとよばれるPooling層があるのが特徴である。 ROI poolingは、画像空間上のROI領域に対応する特徴マップに対して、 空間グリッド領域ごとに、局所的な最大値プーリングをおこなう。 全体的な流れは、以下のようになる。
1.selective searchで画像の中の候補領域(ROI)を絞る。
2.画像をCNNに入力して得られた特徴マップと候補領域を照らし合わせて、特徴マップ上のROIをつくる。
3.それをさらにプーリングする(ROIプーリング)。


Faster R-CNN

Deap Learningによるend-to-endな実装に初めて成功した物体検出アルゴリズムで、Fast R-CNNの改良版である。 selective searchを使わずに、Region Proposal Network(RPN)と呼ばれるネットワークで、物体候補の矩形を出力し、 ここで「物体か背景か」の2択で学習を行う。 その後、物体候補として出力された位置情報をRoI Poolingという処理で特徴マップ上の矩形情報に変換し、 矩形ごとに切り出して「その物体が何なのか」を学習する。


Mask R-CNN

物体検出やセグメンテーション(画像をいくつかのオブジェクトに分割するタスク)を実現するための手法の一つで、 Faster R-CNNの改良版である。 特徴は、一般物体検出(Generic Object Detection)とInstance Segmentationを同時に行う マルチタスクの手法であること。 また、Faster R-CNNで候補領域の処理に用いられるRoI Poolingを改善することで物体検出精度を向上させている。 具体的には、候補領域座標の小数点以下の切り捨てを回避することで領域のずれを軽減した。


一般物体検出

画像から様々なものを検出するタスクである。


特定物体検出

画像から特定のものだけを検出するタスクである。


Semantic Segmentation

画像のpixelを「どの物体クラス(カテゴリー)に属するか」で分類するタスクである。


Instance Segmentation

画像のpixelを「どの物体クラス(カテゴリー)に属するか、どのインスタンスに属するか」で分類するタスクである。 例えば、複数の人がいる場合に、人というクラスのうち、どの人(インスタンス)に属しているのか、まで分類する。


FCOS(Fully Convolutional One-Stage Object Detectionaster)

アンカーボックスを使わないone-stageの物体検出手法である。 アンカーボックスのデメリットを回避しつつ、同程度の精度を出した。 center-nessという指標を用いて物体の中心に近いバウンディングボックスを生成する。 center-nessは

\begin{align} \sqrt{\frac{\rm{min}(l^*, r^*)}{\rm{max}(l^*, r^*)} \frac{\rm{min}(t^*, b^*)}{\rm{max}(t^*, b^*)}} \end{align}
と表される。 ここで、矩形内の点と矩形の上辺の距離をt^*、底辺までの距離をb^*、右辺までの距離をr^*、左辺までの距離をl^*とした。 矩形内の点が矩形の中心から離れていくにつれてcenter-nessは小さくなり、1から0まで変化する。


Bounding box

外部領域に対して、目的の物体領域を最小の長方形で囲って区切る、部分領域の矩形のことである。


Anchor box

アンカーベースの物体検出ネットワーク手法において、CNN特徴マップ上に配置した各アンカー点周辺に、 予測の元矩形として複数サイズ配置しておく、バウンディングボックス予測の事前分布候補群である。 広く使われている技術だがデメリットもあり、ハイパーパラメータに対して敏感であったり、 向きや角度などによる形の変化が多き物体に適用できないことが知られている。 また、アンカーボックスのほとんどが目的のバウンディングボックスと重なっていないため、学習がうまくいかないこともある。


one-stageな手法

バウンディングボックスの候補領域の選定とクラス判別を一括でおこなうことである。


自然言語処理

Attention

入力されたデータのどこに注目すべきか、動的に特定する仕組みの総称のことである。 自然言語処理を中心に発展した技術の一つであるが、画像認識などでも使われ、 モデルによっていろいろな方法が採用されている。


コーパス

自然言語処理分野の研究で用いられるデータベースのことである。 様々なメディアで使われている言語を大量に集めてコンピュータで検索できるように構造化してある。


単語の分散表現

文字、単語をベクトル空間に埋め込み、その空間上の一つの点としてとらえる方法である。


word2vec

2層のニューラルネットワークでの学習を通して、単語の分散表現を得るための手法である。 埋め込み行列を得るためにCBOWとskip-gramという二つのニューラルネットワークが用意されている。


CBOW(Continuous Bag-of-Words)

前後の単語から、ある単語を予測するためのニューラルネットワークである。


skip-gram

ある単語が与えられたときに、その周辺の単語を予測するためのニューラルネットワークである。


GNMT(Google's Neural Machine Translation)

Googleが開発したニューラル機械翻訳のシステムのことである。 2016年から実際のサービスに使われている。 エンコーダ、デコーダ、アテンションから構成され、モデルの並列化による学習の効率化が図られている。 工夫された点は、 LSTMレイヤの多層化、双方向LSTM層(エンコーダの1層目のみ)、 スキップコネクション、複数GPUでの分散学習、予測の高速化(量子化) である。


WordEmbeding

自然言語処理で、各単語に対して固有のベクトルを与えることである。 これによって深層学習で特徴量として扱いやすくなる。


Transformer

RNNをつかわず、アテンションのみで系列データを扱うことができるモデルである。 再起結合がないため、計算効率が良い。 Scaled Dot-Product Attentionと呼ばれるアテンション機構が採用されている。 これは一般的に、クエリQ、キーK、バリューV、クエリとキーの次元d_kを使って

\begin{align} \rm{Attenntion}(Q, K, V) = \rm{softmax}(Q K^T/\sqrt{d_k})V \end{align}
と表される。 クエリは探索対象、キーは探索するときのキー、バリューは探索する値である。 上の式によってクエリに対応するキーの類似度が計算され、それを各バリューにどのくらい注目するかという重みとして使う。 また、アテンションのみで学習するので、事前に入力データの単語の埋め込み表現に位置情報を付加した状態にしておく。


Self Attension

エンコーダとデコーダの初期段階で実装されているAttention部分で、1つの系列の中で自分自身を特徴づける単語を検索する。


Source Target Attention

デコーダ側で実装されているAttention部分で、クエリはデコーダ側から、キーとバリューはエンコーダ側から受け取る。


Multi-head Attention

複数のAttentionヘッドを並列実行して、系列中の各トークン表現の変換を行う部分。 この中にScaled Dot-Product Attentionが含まれている。


BERT(Bidirectional Encoder Representation from Transformars)

Transfomarのエンコーダを使って、過去の情報と未来の情報を使って双方向の学習を行うモデルである。 翻訳、文書分類、質問応答など自然言語処理のタスクで高性能を示した。 予測したい入力単語の前後の単語を予測することができる。 また、2つの入力文に対して、一方の分が他方の文の次に位置するかどうかを判別できる。 事前学習モデルなので、まず大量のデータで学習させてから、 ファインチューニングによって目的のタスクに応じた学習を行う、という形で学習を進めていく。


GPT(Generative Pre-trained Tarnsformar)

OpenAIが開発した、Transformarのエンコーダを使って大規模な事前学習を行うモデルの一つである。 BERTと違って、ある単語から次の単語を予測するといった単一方向の学習を行い、 要約や対話生成といったタスクが得意である。 また、改良版のGPT-2では、ラベル付けしていない大量のWebTextを学習データに用いて、 教師なし学習をさせることにより、多様な文章生成タスクで高い精度を出すことを目標としている。 このモデルの派生版が会話向け言語モデルchatGPTにも採用されている。


音声認識

概要

人の音声をコンピュータが聞き取り、データ化し、テキストとして出力する技術である。 コンピュータが音を聞き取る段階で、自然界にある連続な音データを離散的なデジタルのデータに変換する必要がある。 これは元のデータからデータ点をいくつかサンプリングすることによって行われる。 変換された音声データは圧縮されて保存される。 さらにデータをフレームごとに切り分けてから特徴量の抽出に使われる。


メル尺度

音の周波数に対して、人間の聴覚での聞こえ方に基づいた尺度である。 人の聴覚は周波数の低い音に対して敏感で、高い音に対して鈍感であるという性質が考慮されている。 メル尺度の差が同じであれば、人が感じる音の高さの差も同じということになる。


短時間フーリエ変換

対象の関数(時間を引数にもつ)に窓関数と呼ばれるものを時間ををずらしながら掛けて、それに対して離散フーリエ変換することである。 窓関数は中心が1程度、中心から離れたところで0の値をとるような関数が選ばれることが多く、 これをもとの関数にかけることによって関数の一部を滑らかに切り出すことができる。 関数の一部を切り出す時に窓関数を使う理由は、切り出す領域の始まりと終わりの部分が滑らかに接続しないと、フーリエ変換したときに、そのずれがノイズとして現れるので、データが見にくくなるからである。 短時間フーリエ変換は、音声など時間変化する信号の周波数と位相を解析するためによく使われる。


ケプストラム

音声波形をフーリエ変換して得たパワースペクトルについて、その対数をとり、さらに逆フーリエ変換した結果のことである。 音声の中から声道の特徴を取り出す分析手法で扱われる。


CTC(Connectionist Temporal Classification)

ニューラルネットだけで音声認識を可能とする手法の一つである。 従来は音声とラベルの対応付けを手で行うなどしていたが、データ量が多くなると現実的ではなくなったので、 このラベル付け作業もRNNで処理するようにしたのが特徴である。


標本化定理(sampling theorem)

アナログ信号をデジタル信号に正確に変換するには、元の信号の最大周波数の2倍のサンプリング周波数で標本化すればよい、ということを示したものである。


WaveNet

PixelCNNアーキテクチャに基づく音声生成モデルのことである。 コーザル畳み込みとダイレイト畳み込みを組み合わせたダイレイト・コーザル畳み込みが用いられる。 コーザル畳み込みは、過去の過去の時刻の情報だけを用いて畳み込みを行う手法で、 モデルがデータの時間順序を破らないことを保証できる。 ダイレイト畳み込みは、内積をとる近傍領域の間隔をあける畳み込みのことで、 少ないパラメータで広い領域を畳み込むことができる。 PixelCNNは画像生成モデルの一つで、予測したいピクセルを近傍の画像から予測するモデルである。


グラフニューラルネットワーク

概要

グラフデータに深層学習の仕組みを取り入れたニューラルネットワークのことである。 グラフデータは点(ノード)と線(エッジで)構成されており、ノード間の関係性の情報を持っている。 この関係性を説く稜々として抽出することができる。 主なタスクは、 グラフ上のノードがどのクラスに属するか、というノード分類や、 そのグラフ全体がどのクラスに属するかというグラフ分類、 あるノードと別のノードの間にエッジがあるかどうかを予測するリンク予測、 がある。


GCN(Graph Convolutional Networks)

CNNの仕組みを参考にして提案されたモデルで、並列計算が可能なので、計算効率が改善されている。 グラフの畳み込みでは、ノードに隣接しているエッジの情報を畳み込むことで特徴を取り入れていく。 また、グラフ上での畳み込みは行列の積の形で表現される。


GAT(Graph Attention Networks)

Attentionの仕組みをGNNに適用したモデルである。 隣のノードを畳み込む際の重みをアテンションによって決める。


事前学習モデル

大規模なデータセットを用いて訓練した学習済みモデルのことである。


転移学習

学習済みの事前学習モデルを、学習に用いたデータとは異なる種類のデータに対して少数のデータで再学習を行う方法のことである。 例えば、犬の画像で事前学習させたモデルを猫の画像認識のタスクで再学習を行うこと、などがある。 再学習の際は少ないデータセットで高い精度が得られる可能性が高いので、学習コストを削減できる。 また、学習の際に更新させるパラメータは出力層のものだけなので、比較的速く学習させることができる。


ファインチューニング

転移学習と同じように、学習済みの事前学習モデルを使って、別のタスクの学習をさせる方法である。 転移学習との違いは、更新するパラメータがネットワーク全体となること。 全体を更新するので、学習に必要なデータが増えたり、時間がかかったりするリスクがあるが、精度が上がりやすい。


ドメイン適応

転移学習の一種である。 行いたいタスクが同じでも入力分布が異なるデータセットに対して、同じモデルを使う方法である。 異なるデータセットでも同じ程度の精度を保証するために、 データセットから抽出される特徴量を互いに近づけるような工夫が行われる。


メタ学習

メタ学習の概要

学習法を学習することである。 機械の学習能力を高めることを目的とする。 単にニューラルネットで学習を行うだけでも多くのパラメータが必要だが、 その学習全体を学習するには、さらにパラメータが必要となるため、 実現するためには、できるだけ少ないパラメータで学習できる工夫が必要である。


MAML (Model-Agnostic Meta-Learning)

モデルパラメータの初期値を学習によって最適化する方法である。 同じ初期パラメータを使って、複数の異なるタスクを学習させ、共通してよい結果を出す初期パラメータを探す。 各タスクの学習とは別に、初期パラメータをさらに勾配降下法で更新するため、パラメータの2階微分が出てくる。 これによって計算量が多いという問題がある。 また、勾配法を使うのでモデルが微分可能である必要がある。


Neural process

入力と出力の関係を確率過程でモデル化することで学習する方法である。 少ないデータから全体のデータ分布を推測することができる。


距離学習

距離学習の概要

サンプル間の距離(metric)または類似度(similarity)に基づいてクラスごとに分離されるように、 入力データの特徴量空間への変換を学習させる手法である。 距離学習の目的は、同じクラス(intra-class)のサンプル間の距離を小さくしながら、 異なるクラス(inter-class)のサンプル間の距離を大きくすることである。 これを用いてクラス分類を行う。


Siamese network

ニューラルネットワークを用いた距離学習手法の一つである。 一度のステップに2つの異なるサンプルを考え、共通のCNNに入れて特徴量に変換した後、 これらの特徴量間の距離を計測する。 2つの入力が同じクラスであれば距離を小さく、違うクラスであれば距離を大きくするように学習する。 このために目的関数は

\begin{align} L = \frac{1}{2} (y d^2 + (1-y) (\rm{max}(m-d, 0))^2) \end{align}
と表される。 ここで、$d$は特徴量空間距離、$y$は入力ペアが同じクラスの時に$1$、違うペアの時に$0$をとるパラメータ、 $m$は異なるクラスのサンプル間距離のマージンであり、どのくらい離れていればよいかという基準を表す。


Triplet network

Siamese networkの発展版で、一度に3つのサンプルを扱う手法である。 3つのサンプルの内2つでペアを何通りか作り、 ペアと残りのサンプルが似ているときには互いの距離を遠ざけ、 逆にサンプルとペアが似ているときにはペアとの距離を近づけることで安定して学習ができる。 このときTripletLossと呼ばれる誤差関数を導入してこれを小さくするように学習が行われる。基準となるアンカーサンプルと、それと似ているポジティブサンプルとの距離を$d_p$、似ていないネガティブサンプルとの距離を$d_n$とすると、誤差関数は

\begin{align} L = \rm{max}(d_p - d_n + m, 0) \end{align}
と表される。 ここで$m$は$d_p$と$d_n$の差のマージンであり、$d_n$が$d_p$よりどのくらい大きければよいか、という基準を表す。


説明可能性

説明可能性の概要

機械学習・深層学習における説明とは、モデルの出力以外の補足的な情報をモデルから他の技術を使って抽出することである。 説明可能性とはこの補足情報を人間が理解できる形で提示できるかどうかを表しているものである。 システムの安全性、公平性、専門性を担保する必要がある場合、結果の根拠を示さなければならないことがある。 しかし現時点でのAIは、特定のタスクに対して、高い精度での予測・認識といったことは得意だが、 その結果の根拠を説明することは苦手である。 特にディープニューラルネットの場合、パラメータが非常に多いため、 どの入力が結果にどのような影響を与えているのかを特定することが難しいので工夫が必要である。


局所的な説明

特定の入力に対するブラックボックスの予測の根拠を提示することで説明とする方法である。


大局的な説明

複雑なブラックボックスモデルを可読性の高い解釈可能なモデルで表現することで説明とする方法である。


Gradients

Saliency mapという概念を用いた説明手法である。 入力画像の各ピクセルを、ある決められたスコアに応じてランク付けする。 人間が結果を直感的に解釈できない、という問題がある。


CAM(Class Actication Mapping)

Global Average Poolingと呼ばれる、畳み込み層での画像チャネルの方向の平均操作を 用いてパラメータ数を大幅に削減する工夫がされた説明手法である。 畳み込み層で得られる特徴マップと全結合層の重みを使って、特徴マップのチャネル方向の加重平均を計算すると、 学習の際に画像のどこに注目したのかということを推測できるマップが得られる。


Grad-CAM

GradientsとCAMを合わせて説明手法である。 CAMにおける重みを特徴マップの勾配のチャネルごとの平均で置き換えたもの。 画像のどこに注目したのかは視覚的にわかるが、理由を知ることはできないという問題がある。


LIME(Local Interpretable Model-agnastic Explanation)

モデルが予測をする際に、入力データのどの特徴量が予測結果にとって重要なのかを説明する手法である。 線形回帰などの解釈可能なモデルに置き換えて説明する。


SHAP

元のモデルを簡単なモデルで説明するとき、 ゲーム理論で用いられるshapley valueを応用して、 各特徴量がモデルの出力にどのくらい寄与しているのかを求める説明手法である。 また、shapley valueとは協力ゲームにおいて、 最終的な結果に対する各プレイヤーの貢献度を表すものである。 貢献度に応じて、どのように報酬を分配するかというタスクで使われていた。 local accuracy、missingness、consistencyという条件を説明モデルに課す。 local accuracyは、ある入力xに対する予測を$f(x)$とし、単純化したデータ$x^{\prime}$に対する局所的な予測を$f^{\prime}(x^{\prime})$としたとき、$f(x) = f^{\prime}(x^{\prime})$となるということを表す。 missingnessは、予測結果に影響を与えないような特徴量は、その予測に対して貢献をしていないことを表す。 consistencyは、ある特徴量の有無によって、$f$のほうが$f^{\prime}$よりも大きく変化するとき、$f$のほうが$f^{\prime}$よりも貢献度が高いことを表している。


開発環境と軽量化

TOPへ

define-and-run方式

ディープニューラルネットワークを実装するライブラリで、 計算グラフ(ネットワーク)を構成してからそれに沿って計算を行う方式である。 Tensorflowはこの方式である(ver.2からはdefine-by-runの書き方もできる)。


define-by-rum方式

計算しながら逐次的に計算グラフの構成を行う方式である。 Pytorchはこの方式である。


剪定(Pruning)

学習済みネットワークで、重みの絶対値が閾値以下となっている部分を切断して パラメータを減らすことでモデルを圧縮する方法である。 その後、再学習を行って精度を保つようにする。


量子化(Quantization)

32bitなどの浮動小数点で表されるネットワークのパラメータを低bitで表現することで、 モデルの軽量化を行う方法である。


蒸留(Distillation)

大きいモデルを教師モデルとして、その知識を小さいモデルの学習に利用する方法である。 元のモデルの知識を継承した小規模モデルを作ることで、モデルの軽量化を実現する。


MobileNet

スマホなどの小型端末や、リソースが限られているエッジデバイスでも 推論ができるCNNとして作られた軽量なモデルである。 デプスワイズ畳み込みとポイントワイズ畳み込みが使われている。


Docker

コンテナ型の仮想環境を作成、実行するためのプラットフォームのことである。 コンテナごとに独立な環境を構築できるので、アプリの開発や検証と相性がいい。 ホストのOSを利用し、そのうえで複数のコンテナを運用する。 仮想マシンの場合はホストOS上で仮想環境を作り、 その中でゲストOSやライブラリを動かすのでリソースコストが高くなりやすかったが、 コンテナ型はそれらと比べて軽量であるのが特徴である。


分散処理

概要

大規模なディープラーニングを行うときには大量のデータを使って大量のパラメータを更新させるので、 長い時間がかかる。これを改善させるためのアプローチの一つである。


データ並列化

親モデルをコピーしたレプリカを各GPUなどの計算資源に割り当て、 それぞれ異なるデータを用いて学習させる。 同期型と非同期型に分けられる。 同期型ではすべてのGPUが計算してから平均の勾配を求めるが、 非同期型では他のGPUが計算している間に更新処理を行うことがあり、 各GPUに性能差があっても速度が落ちにくい。


モデル並列化

一つのモデルをいくつかに分割し、複数のGPUにロードして学習を行う方法である。 プロセス間の通信速度が学習速度に影響する。 また、どのようにモデルを分割するかは、モデルによって異なる。


GPGPU(General-Purpose computing on Graphics Processing Units Computing)

画像処理を高速に実行するGPU(Graphics Processing Unit)の機能を、画像処理以外の用途に転用することである。 GPUはCPUと比べて計算性能は低いが並列処理が得意なので、多数のデータを扱う機械学習に向いている。


FPGA(Field Programmable Gate Array)

設計者がフィールド(現場)で論理回路の構成をプログラムできるゲート(論理回路)を集積したデバイスである。 製造後は回路構成を変更できないLSI(集積回路)に対し、プログラムにより内部の回路構成、つまり処理内容を変更可能であることからこのように呼ばれる。 深層学習で行列演算を論理回路によって物理的に実装することで、処理速度の高速化や低消費電力化を図ることができる。


TPU(Tensor Processing Unit)

ディープラーニングを高速化するために、Googleが開発したプロセッサである。 Google自身のサービスであるGoogle Search, Google Translate, Google Photoといったサービスで活用されている。 最新のモデルはノートPCのプロセッサのやく1000万倍に相当する計算能力がある。 8ビットまたは16ビットの演算器を使用している。 また、演算結果をメモリではなく、 次の演算器に渡すことでメモリからの読み出しにかかっていた時間を短縮し、処理を高速化している。 それらの演算器は直列に配置されていて、このアーキテクチャはシストリックアレイと呼ばれる。


参考サイト - 個人の独断と偏見に基づく

  1. zenn
  2. Qiita
  3. zero to one AI・機械学習用語集
  4. zero to one Learnign Blog
  5. DeepAge -人工知能の今と一歩先を発信するメディア-
  6. CVMLエキスパートガイド
  7. 楽しみながら理解するAI・機械学習入門
  8. Transformerを理解する
  9. ふんわり理解するGrad-CAM
  10. 【CNN+Grad-CAM】仕組みの解説と画像の予測根拠可視化
  11. メタ学習(MAML)の仕組みを解説する。【論文解説】
  12. Alicia Solid Project
ページTOPに戻る