---
lang: ja-jp
breaks: true
---
# 機械学習 関連 雑多な用語集 2021-07-23
## 参考資料
> Deep Learning入門:ニューラルネットワーク設計の基礎
> https://youtu.be/O3qm6qZooP0?list=PLg1wtJlhfh23pjdFv4p8kOBYyTRvzseZ3
## ニューラルネットワーク(Neural Network)(NN)
* 脳の神経細胞による学習機能をコンピュータでシミュレーションする技術。

* 人工ニューロンを複数組み合わせることにより作られたものをニューラルネットワークと言う。
* 1960~1990年頃より使用されている技術で、入力層・出力層以外に1~2層の中間層を持つネットワーク

* 解きたい問題に合わせて、最後の活性化関数とロス関数を選択する。
## 人工ニューロン

* 脳の神経細胞をコンピュータ上でシミュレーションしたもの。
* 一つのニューロンに対して入ってきた電気信号x(x1,x2,x3・・・)に対して、重みwをそれぞれ掛けて合計し、そしてバイアスbをを加えるといった処理が行われる。そしてその結果対して、活性化関数fにより非線形化する処理が行われる。(※Affine+Tanhの場合)
*
## 入力ニューロン(入力層)
* 画像認識における入力ニューロンは、人間の目の網膜細胞に相当する。目に入ってきた光を電気信号に変換する役割を持つ。入ってきた光の強さで各電気信号の強さが決まる。
* 入力データのサイズに合わせて入力ニューロン数を決定する。
## 出力ニューロン(出力層)
* ニューラルネットワークによって計算された結果(予測値)を表す。
* 得たい答えのサイズに合わせて出力ニューロン数を決定する。
## 中間層

* ニューロンの数を増やす、層の数を増やすほどにネットワークの表現力は向上する。
* ただし、ニューロン数、層の増加は学習のために必要なデータ量、メモリ量、演算量を増加させる。
* 適切なニューロン数、層の数を決定することで、効率の良い高精度な結果が得られる。
## 機械学習(Machine Learning)(ML)
* ニューラルネットワークを学習させる「誤差逆伝播学習法」や「強化学習」、「遺伝的アルゴリズム」などが機械学習に当たります。
## Deep Learning(ディープラーニング/深層学習)
* 2006年~より使用されている技術で、入力層・出力層以外に3~1000層以上の中間層、及び数十メガ規模のニューロン数を持つもの。

* 入力ニューロンからの電気信号に対して掛け算・足し算を行う重み及びバイアスを、乱数を用いて初期化し(赤ちゃんの脳みそに相当)、中間層で掛け算・足し算を繰り返すことで出力ニューロンの値を算出します。当初、出力ニューロンには誤った結果が出力されますが、答えを元に正しい結果となるように重み及びバイアスを調整し、再度中間層で掛け算・足し算を行うといった流れを10回ほど繰り返し行うことで正しい値が出力ニューロンに算出されるようになります。この入力ニューロン及び出力ニューロンに、約6万件のデータおよび答えを与えることで最適化が進んでいきます。このように、コンピュータでこの繰り返し最適化を行っていくことを機械学習と表現しています。





## Supervised learning/教師あり学習
## Unsupervised learning/教師なし学習
## 認識問題
* 認識問題では、ニューロンの数は最初の層で大きくし、その後徐々に小さくする。
* 逆に、生成問題 では徐々に大きくする。
* 例)ResNet152(レズネット)
## 生成問題
## 分類
* あるデータがグループに属するかを予測する作業。空間をいくつかの領域に分けるような出力結果が得られる。

* 決定(けってい)木(ぎ)、ランダムフォレスト、ロジスティック回帰、k-meansクラスタリング等。
## 二値分類
* 出力層の結果が二つとなる分類。
* 例)男性・女性、1か0か。※(実際には1.0に近ければ1、0.0に近ければ0と判定する。)
* ロス関数として、Binary Cross Entropy が用いられる。
## 分類問題(カテゴリ認識等)
* ロス関数として、Categorical Cross Entropy が用いられる。
## クラス分類 : Classification
## クラスタリング : Clustering
## kernel-approximation/カーネル近似
## Random Forest Classifier/ランダムフォレスト・クラス分類
## K-Neighbors Classifier/K−近傍法・クラス分類
* ある入力xが与えられたとき、それに最も近いk個のデータの平均値を予測値とする。「最も近い」という距離は、通常「ユークリッド距離」によって測る。

## 全結合層(Fully Connected Layer)(FC)(Affine)(アフィン)(Dense)(デンス)(densely-connected NN layer)(リニア)(フリーコネクテッド)

* 出力ニューロンが、すべての入力ニューロンからの信号を受け取る結合層の事。
* 各接続はそれぞれ異なる重みをもつ。
## Tanh(タンエイチ)(Hyperbolic Tangent)(ハイパボリック タンジェント)

* 入力値を非線形に変換して、-1~1の範囲に収めるための活性化関数。
* Deep Learning以前にはよく用いられていたが、Deep Learningに於ける活性化関数はReLU(Rectified Linear Unit)が基本として用いられる。
## 重み(w)
## バイアス(b)
## MNISTデータセット(エムニスト)(手書き文字認識)
* 画像認識問題の論文においてベンチマークとして利用される最もポピュラーなデータデータセットの一つ。
* http://yann.lecun.com/exdb/mnist/
(MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges)
## Deep Neural Network(DNN)

* ニューラルネットワークは、乗加算計算を主とする関数の組み合わせで表現される。
* 画像認識に於いては近年ほとんど使われなくなった。その代わり、CNNが使用されている。
## CNN(Convolutional Neural Network)(コンボリューショナル ネットワーク)

* 通常のNeural Networkに畳み込みConvolutionを追加したもの
* 畳み込みニューラルネットワーク
* CNN は、畳み込み層、プーリング層、全結合層などで構成します。
* 全結合層のみでは、画像などの2次元のデータを扱う場合に画像の特徴が失われてしまう問題がある。
## CNN の種類
* EfficientNet、ResNeXt、ResNet、GoogLeNet、VGG、AlexNet、LeNet など。
## Convolution:畳み込み。特徴を見つける。コンボリューション。
## ネットワーク構成:ニューラルネットワーク構成の事。
## 連鎖律
* 連鎖律とは、導関数(微分した結果)を分数のように分解して積の形にできる法則です。複雑な式を単純な式に分解して微分する事が出来ます。

## 勾配降下法
* 微分で最小値を求める方法


## バックプロパゲーションBackpropagation(誤差逆伝播法)
* 多変数関数の最適解は、それぞれの変数で膨大な数の偏微分を繰り返し行う(勾配降下法)が、実際には膨大な計算時間が必要となり現実的ではない。


## 活性化関数(activation function)

* 入力の重み付き和をある閾値を境に0または1の出力値に変換するような関数を「活性化関数」と呼ぶ。次の層に渡す値を整えるような役割となる。
* 微分使用した学習、及び層を重ねることを意味のあるものとする為、活性化関数には非線形関数を用いる。
## ステップ関数
* 入力が0以上なら1を、0以下なら0を出力する。

* 「単純パーセプトロン」の活性化関数として使用される。
* 実際に使用されることはほとんどない。
## ReLU 関数(Rectified Linear Unit)(レルー)(ランプ関数)
* 入力が0以上ならその値を出力し、0以下なら0を出力する。


入力が大きけれ大きいほど出力も大きくなる。
* 中間層の活性化関数としてよく利用される。
## 恒等関数
* 入力をそのまま出力とする関数。
* 回帰問題における出力層の活性化関数として使用される。
## シグモイド関数(sigmoid)
* 0.0から1.1までの浮動小数値を出力する。

小さければ小さいほど0.0に近く、大きければ大きいほど1.0に近くなる。
* 確率を出力していると解釈できる為、二値分類の出力層で用いられる。
## Softmax(ソフトマックス)ソフトマックス関数
* 0.0~1.0迄の浮動小数値(確率)を返し、合計が1となる活性化関数。


* 多値分類問題の出力層で用いられる。
* 一般に、ニューラルネットワークで多値分類を扱う際は、出力層のニューロンの数を分類するクラスの数と同じにする。

## Pooling:特徴を粗く整理する。(ダウンサンプリング)
## Max pooling
* 入力データをより扱いやすい形式に情報を圧縮し、ダウンサンプリングすること。圧縮する方式としてサンプリングする際に最大値を利用する処理の事。
## パーセプトロン(単純パーセプトロン)
* パーセプトロンとは、1957年、ローゼンブラットというアメリカの研究者によって考案されたアルゴリズムのことですが、人工知能や機械学習、ディープラーニングなどのアルゴリズムの礎となっている。
* パーセプトロンは、複数の入力に対して1つ出力する関数です。出力は1か0の2値です。

入力信号xxに重みwwが乗算され、その総和が一定のしきい値を超えたら11を出力します。それ以外は00を出力します。11を出力した場合「ニューロンが発火する」と表現したりします。
* パーセプトロンの登場により、1960年代にニューラルネットワークのブームが起こりました。しかし、1969年に発表されたマービン・ミンスキーによる研究報告により、パーセプトロンの致命的な欠点が明らかになり、ブームは終焉を迎えてしまいました。パーセプトロンは線形分離可能な問題なら正しく学習することができましたが、線形分離不可能な問題は、正しく学習できません。有名な問題として、XORゲート(排他的論理和)は、線形分離不可能なため、(w1,w2,θ)(w1,w2,θ)の組み合わせを見つける事ができません。

このように◯と△を一つの直線で領域を分けることができず、どうしても曲線になってしまいます。これが線形分離不可能といいます。
## 多層パーセプトロン(深層パーセプトロン)
* パーセプトロンではXORゲートを表現できませんでしたが、実は層を重ねることによって、XORゲートを表現することができます。
* 深層(多層)ニューラルネットワークと同じ意味で使用される。

* ニューラルネットワークでは、層をいくつか重ねて適切な変換を繰り返せば、任意の関数を近似することができる。
## SSD
* 【物体検出】SSD(Single Shot Multibox Detector)
* https://arxiv.org/abs/1512.02325
([1512.02325] SSD: Single Shot MultiBox Detector (arxiv.org))
## Kaggle(カグル)
* クラウド上に提供されたJupyterNotebook環境、機械学習に関するリソースが提供されたサービス。様々な課題に対する答えをコンペ形式で提出する大会がある。
* https://www.kaggle.com/
## 損失関数(ロス関数)

## 二乗和誤差
* 回帰問題の損失関数

## クロスエントロピー誤差Cross-entropy (交差エントロピー誤差)
* 分類問題の損失関数
* 2値分類用。分類が2種類で、出力ノードが1つの場合

* 多値分類用。分類が2種類以上ある場合に使います。分類の数だけ出力ノードが必要になります。

* エントロピーという言葉は、一様化・拡散化・無秩序化・衰退を意味する。情報理論でのエントロピーとは、ある出来事の起こりにくさを表す。
## one-hot表現
* 1つだけ 1 があり、他は 0 になる。
* (0 1 0 0)、(0 0 0 1)、(0 0 0 0 0 1 0 0)、(0 0 0 1 0 0 0 0)。
## 畳み込み層
## プーリング層
## predict(プレディクト)予測
## 説明変数(大文字'X')と目的変数(小文字'y')
* 説明変数とは、目的変数yを予測するための変数。
* 目的変数とは、分析によって説明される側の変数のことです。文字では通常yで表し、説明変数xによって説明されます。
* 例)築年数、広さ、立地を説明変数として、目的変数の家賃を予測
## 回帰問題(数値予測等)
* ロス関数として、Squared Error が用いられる。
## 回帰 : Regression
* 連続する数値データを予測する作業。予測結果が連続した点の集合(つまり線)として出力される。

* 線形回帰、ロジスティック回帰、サポートベクトルマシン等。
## 線形回帰(Linear Regression)
* たくさんの変数を持つ集まり (= ベクトル) についてある関数にノイズが加わったような状態が事例として観測されました。このときその関数を予測しましょうというのが回帰分析です。2 次元の変数 x と y を考えてみます。この変数間に一方 x が他方 y を左右ないし決定する影響があるとき、 x を 独立変数 (independent variable) 、 Y を 従属変数 (dependent variable) と言います。この関係式を要約して直線を当てはめるのが線形回帰です。
* 直線近似(回帰分析)

## 単回帰
* 単回帰とは 1つの説明変数から 目的変数を求める回帰分析です。

## 重回帰
* 単回帰とは 複数の説明変数から 目的変数を求める回帰分析です。

## サポートベクトルマシン
## Placeholder(プレースホルダー)
* プレースホルダーはデータが格納される入れ物。データは未定のままグラフを構築し、具体的な値は実行する時に与える。
## 強化学習(Reinforcement Learning)
* コンピュータがランダムに動作することで、最適解を自ら見つけていく学習法。
## 学習率


## ドロップアウト(Dropout)
* Deep Learningでガリガリ学習させていくと、時に過学習が発生します。これは学習データばかり処理しすぎて、それ専用の識別機になってしまい、別のデータに対応できなくことを意味します。

いくつかの点があり、最初はあまり点に沿っていないのですが、やがて点に近い曲線が出来上がります。しかし学習させすぎると、各点には近いのですが、どうみてもおかしな曲線が出来上がってしまいます。
* Deep Learningの場合、各のノードが階層でつながっているのですが、このうちの必要がなさそうなノードを消してしまいます。


## 正解率(accuracy)(アキュラシ)(正確さ)
* 評価関数
## Epochs(エポックス)(エポック)(学習回数)
「エポックを回す」といった表現をしていることもある。
## 平坦化(へいたんか)(Flatten)
* 配列であらわされた2次元の画像データを1次元に変換すること。
## 平滑化(へいかつか)(スムージング)(smoothing)(ぼかし)(blur)
* 画像をぼかすこと
## Verbose(冗長)
## 特徴量のスケーリング
* 特徴量のスケーリングは機械学習の前処理の1つで、特徴量によって単位が違っていたり、または値が極端に違っている時に、各次元の関係をわかりやすくするために有効です。
## 標準化(Z-Score Normalization)(特徴量のスケーリング)
* 元のデータの平均を0、標準偏差が1のものへと変換する正規化法のことを指します。
* Scikit-learn
```python=
StandardScaler
```
```python=
RobustScaler
```
## 正規化(Min-Max Normalization)(特徴量のスケーリング)
* 正規化は英語では"min-max normalization"と呼ばれ、データは最大値が1、最小値が0のデータとなるように行われます。
* Scikit-learn
```python=
MinMaxScaler
```
## 最近傍法(さいきんぼうほう)
* ある入力xが与えられたとき、その値に最も近いデータを予測する手法。最も単純で基本的なアルゴリズムとして知られている。

## ONNX モデル(Open Neural Network Exchange (ONNX))
* ONNX は、AI モデルのオープン ソース形式であり、フレームワーク間の相互運用性をサポートしています。 つまり、PyTorch などの多くの一般的な機械学習フレームワークのいずれかでモデルをトレーニングして ONNX 形式に変換し、ML.NET などの別のフレームワークで ONNX モデルを使用することができます。
* https://onnx.ai/
## ハイパーパラメータ
* 深層学習では重み・バイアスのようなパラメータの最適化に勾配降下法が用いられる。各種パラメータの中で、勾配降下法によって最適化できない・しないパラメータの事をハイパーパラメータといいます。例えば、学習率やバッチサイズ、学習イテレーション数といったものがハイパーパラメータに相当します。また、ニューラルネットワークの層数やチャンネル数といったようなものもハイパーパラメータです。さらに、学習に用いる各種アルゴリズムの選択もハイパーパラメータといえます。
* このようなハイパーパラメータの探索には、Tree-structured Parzen Estimator(TPE) というベイズ最適化アルゴリズムの一種が用いられています。
## Tree-structured Parzen Estimator Approach
* Algorithms for Hyper-Parameter Optimization
## 確率的勾配降下法(Stochastic(ストカスティック) Gradient(グラディエント) Descent(ディセント))(SGD)
## Feed Forward Neural Network(FFNN)(フィード フォワード ニューラル ネットワーク)
* 入力されたデータが、入力から出力まで一方通行で処理されるネットワーク。
* FFNNの例
* DNN:Deep Neural Network.
* CNN:Convolutional Neural Network.
*
## Recurrent Neural Networks(RNN)(リカレント ニューラル ネットワーク)
* recurrent:再発する、周期的に起こる、再現性。
* 時系列データに対して適用されるネットワーク。
* データが入力され最終的に出力されたデータが、次の時刻で再び入力に戻ってくるようなフィードバックループを持つネットワーク。
* 時系列を考慮することでより高い性能が期待される場合に用いられる。
* 例えば、時系列で文字入力が順次に行われるような事象で、次の時刻に入力される文字を予測する際に、直前までに入力された情報をフィードバックすることで精度の高い予測が可能となる。
* 学習の際に処理される誤差逆伝播に関しても、時間方向に遡りながら処理される。RNNにおけるバックプロパゲーションは、BPTT(back propagation through time)と呼ばれます。
### RNNの応用例
1. Many to One
* 時系列データである文章を入力して、その文章がポジティブであるかネガティブであるかの二値を出力するようなネットワーク。
1. One to Many
* 一枚の画像を入力して、その画像に関する単語(複数の文字)を出力するようなネットワーク。
1. Many to Many①
1. Many to Many②
## back propagation through time(BPTT)
* RNNにおける、誤差逆伝播法のこと。
* 時系列での逆伝播
## Generative Adversarial Networks(GAN)(敵対的生成ネットワーク)
* 近年、画像生成等で大きな成果をあげているネットワーク。
* 「本物らしさ」を学習することにより、高品質なデータ生成などを実現するテクニック。
## 転移学習(Transfer Learning)
## 量子化学習(浮動小数点演算の量子化)(機械学習のコンパクト化)
* ニューラルネットワークを浮動小数点演算から16bitまたは8bit整数演算に置き換えることで、高速な演算及び小メモリ化が可能となる。
* Straight Through Estimator、Loss Scaling
## Precision(精度)
* 通常の機械学習で使用される浮動小数点数は32bit(single precision floating point number)
* 半精度浮動小数点数(16bit, half precision floating point number)を使用することで機械学習を高速化することが可能。

## Channel Last(NHWC)

## NVIDIA Tensor core
## Fused Batch Normalization
## Binary Semantic Segmentation
## OCR(Optical Character Recognition/Reader)(光学的文字認識)
## scatter(散布図)
## Spiking Neural Network
## VGG16 Neural Network
## Mask-RCNN Neural Network
## AutoML
AutoML(Automated Machine Learning)とは直訳すると「自動化された機械学習」ですが、機械学習モデルの設計や構築を自動化すること、またはそのための手法全般を指します。
問題定義や一部データ収集などは人が行う必要がある一方、データの加工からモデル設計までは自動化できるようになってきています。この自動化を行うのが、AutoMLです。
#### 代表的なAutoMLツール
* AutoML Table(Google)
* Automated ML(Microsoft)
* AutoAI(IBM)
* H2O Driverless AI(H2O.ai)
* DataRobot
* Prediction One(Sony)
* MatrixFlow
* Nanonets
* dotData
## Concatenate(コンカチネート/結合)
###### tags: `機械学習` `用語集`