機械学習の用語一覧【簡単な解説付き】

# はじめに
成り行きで後輩に機械学習を教えることになったのですが，機械学習の文脈に登場する用語で聞きなれないものが多いためか，苦戦する様子が度々見られました．（後輩には教え方が拙くて申し訳ない……）

そこで，初心に返って，機械学習の文脈で登場する用語とその意味についてまとめてみたいと思います．
対象は，これから機械学習を勉強するという人だけでなく，機械学習に興味がある人や機械学習を理解する必要に迫られている人などの理解の助けになれば幸いです．

:::note
本記事では項目ごとに，**主観に基づく**評価をしています．その用語の登場頻度や重要度，用語自体の理解に要する難易度などから可能な限り総合的に判断しています．分野によっては用語の重要性が変わってくると思いますが，その点についてはご了承ください．（正直，私の専門に近い部分の評価とそうで無い部分の評価には差が見られると思います．違和感があるかもしれないので，優しく指摘いただけると幸いです．）

|評価|目安|
|:-:|:--|
|★|機械学習の大まかな枠組みの理解に必要な程度の用語，出現頻度の特に高い用語|
|★★|機械学習の理解に必要な程度，単純な機械学習モデルを動かしてみるのに必要な程度|
|★★★|機械学習の詳細な理解に必要な程度，有名な機械学習モデルをそのまま利用するのに必要な程度|
|★★★★|自身で機械学習モデルを設計するのに必要な程度，機械学習を研究等の用途に活用するのに必要な程度|

記法）正式名称 (略称, 別称 etc...) [評価]
:::

:::note warn
思いつきで書き始めてそのまま走ったので，（特に後半部分は）失速している部分もあると思います．気が向いたタイミングで，度々，加筆・修正等をしようとは思います．[修正内容](https://qiita.com/Yorozuya59/items/53cd1fa9fe25efa16d72#%E4%BF%AE%E6%AD%A3%E5%B1%A5%E6%AD%B4)は最後にまとめておくようにします．
:::

# 1. ツール

## 1.1. 開発環境
ソフトウェアやハードウェアなど，開発を行うために必須となる構成要素のこと．

:::note
本記事では整理のためにライブラリの章を設けていますが，開発環境が指すものにライブラリが含まれることが多いです．
:::

### Python [★]
プログラミング言語の1つ．データサイエンスや機械学習の分野でよく用いられている言語．

https://www.python.org

### Google Colaboratory (Colab) [★★]
Googleが提供するブラウザ上でPythonを実行可能なサービス．コードの共有が容易であるため，コミュニティなどではよく用いられている．
また，環境構築が不要で，無料でGPUが利用可能．（有料版では無制限，かつ，より強力なGPUを利用可能．）

https://colab.research.google.com/?hl=ja

### Jupyter [★★]
Pythonを含む多数の言語のインタラクティブな（対話型）実行をサポートするソフトウェア．環境構築が必要であるが，自身でカスタムした実行環境が利用できる．

https://jupyter.org

なお，JupyterにはJupyter NotebookやJupyter Lab，Jupyter Hubなどの種類がある．

### Anaconda [★★]
機械学習やデータサイエンスでよく用いられるOSS（無料で利用可能なソフトのこと）をまとめて提供するツール．PythonとR言語をサポートしている．
初級者には優しいが，最新の分野ではConda特有のエラーが発生しがちであるので，その点については注意が必要である．

https://www.anaconda.com

### Graphics Processing Unit (GPU) [★★]
多数の算術論理演算ユニット(ALU)を搭載したユニットのこと．画像処理に特化した機能を持つが，多数の乗算と加算が可能である（行列計算が得意）という特性から機械学習でもよく用いられる．

![image.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693436/4e2480a6-283f-516e-32d7-fba7d7dbd3bb.gif)

[Cloud TPU の概要](https://cloud.google.com/tpu/docs/intro-to-tpu?hl=ja)より引用．

### Tensor Processing Unit (TPU) [★★★]
機械学習で必須となる行列計算に特化したユニットであり，GPUよりも高速に動作可能である一方で，処理の汎用性は劣る．Google Colab上で利用可能．

![image.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693436/e9a6dafc-94c9-f735-c536-e4c4ac60baa6.gif)

[Cloud TPU の概要](https://cloud.google.com/tpu/docs/intro-to-tpu?hl=ja)より引用．

## 1.2. ライブラリ
ライブラリとは，プログラム開発でよく用いられる機能を切り出して再利用しやすいようにまとめたものを指す．フレームワークとも．

### NumPy [★★]
Pythonのライブラリの1つ．主に科学計算に特化しており，多次元配列や行列の計算を効率的に行うことができる．

https://numpy.org/ja/

### Pandas [★★]
Pythonのライブラリの1つ．主に表形式のデータの操作や分析に特化しており，データのロードやセーブ，フィルタリングや集計，変換などの機能を提供する．

https://pandas.pydata.org

### Matplotlib [★★]
Pythonのライブラリの1つ．可視化機能を提供しており，グラフや図の描画を可能とする．折れ線グラフやヒストグラム，散布図など，多様なグラフに対応しており，カスタマイズ性も高い．

https://matplotlib.org

### Seaborn [★★★]
Pythonのライブラリの1つ．Matplotlibをベースとしており，高レベルのインターフェイスを提供（よりリッチな図を提供）している．

https://seaborn.pydata.org

### Scikit-learn [★★]
Pythonのライブラリの1つ．機械学習に必要な機能を提供しており，多様な機械学習アルゴリズムやツールを提供している．簡単に実装可能なAPIが特徴であることから，初学者におすすめされることが多い．

https://scikit-learn.org/stable/

### Tensorflow [★★]
Pythonライブラリの1つ．Googleが開発した深層学習フレームワークであり，深層学習モデルだけでなく，それらに関連する分散処理といった機能も提供する．

https://www.tensorflow.org/?hl=ja

#### tf.keras [★★]
Tensorflow内の高水準APIで，KerasのAPIをTensorflow上で利用できるようにしたものである．簡潔なモデルの構築や簡潔な学習機能を提供する．

https://www.tensorflow.org/versions/r2.14/api_docs/python/tf/keras

#### TensorBoard [★★★]
Tensorflowの可視化ツール．モデルの学習や評価の際に利用する．

https://www.tensorflow.org/tensorboard

### Keras [★★]
Pythonライブラリの1つ．正確には上記の`tf.keras`とは異なるライブラリであるが，混同されることも多い．（自身で開発するのでなければあまり気にする必要はないかもしれませんが．）
また最近では「Kerasでモデルを構築する」と言えば`tf.keras`のことを指す場合が多い（個人的な印象）．

https://keras.io/

### PyTorch [★★]
Torch（Lua言語で記述されたライブラリ）のPython用インターフェイス．Facebook（現Meta）が提供する深層学習フレームワークであり，深層学習モデルだけでなく，torchvisionをはじめとする必須の周辺処理を提供するライブラリが充実している．

https://pytorch.org/

#### torch.Tensor [★★★]
PyTorchで利用されるデータ型．TensorはNumPyのndarray型の多次元配列とよく似ているが，主にGPU上での演算をサポートするという点で異なる．

https://pytorch.org/docs/stable/tensors.html

### Transformers [★★★]
Pythonライブラリの1つ．Hugging Faceが提供するTransformerのためのフレームワークであり，PyTorchを中心とする深層学習ライブラリ上で動作する．学習済みモデルを容易にダウンロードして利用したり，学習したりすることが可能となる．

https://huggingface.co/docs/transformers/en/index

### Compute Unified Device Architecture (CUDA) [★★★]
NVIDIA社が自社GPU向けに提供している，GPU上で汎用の並列計算を可能とする実行環境．

https://developer.nvidia.com/cuda-toolkit

### CUDA Deep Neural Network (cuDNN) [★★★]
CUDA上に構築された深層学習ライブラリであり，PyTorchやTensorflowなどの主要な機械学習フレームワークでサポートされている．畳み込みや活性化関数などの深層学習でよく用いられる演算を提供している．

https://developer.nvidia.com/cudnn


# 2. データ

## 2.1. データ分割

### Train(ing) Data (学習データ) [★★]
モデルの学習に利用するデータ．大学受験で例えるなら「問題集」のこと．

### Validation Data (検証データ) [★★]
モデルの検証に利用するデータ．大学受験で例えるなら「模試」のこと．

### Test Data (評価データ) [★★]
モデルの評価に利用するデータ．大学受験で例えるなら「入学試験」のこと．

### k-fold cross validation (k分割交差検証) [★★★]
モデルの評価方法の1つ．データセット全体を$k$個に分割して$k-1$個のデータセットで学習をおこない，1個のデータセットで評価をおこなう．これを$k$回実施して，それらの平均により最終的な評価値を得る手法．
先述の Train-Validation-Test 分割に比べて，データセット全体を評価に使用するため，偶然性に左右されにくい評価を得ることができる．

## 2.2. データセット

### Kaggle [★★]
データサイエンスや機械学習のためのコミュニティ．データセットが提供されていたり，コンペが開催されたりしている．

https://www.kaggle.com/

### Google Dataset Search [★★]
Googleが提供する，データセット検索に特化したサービス．

https://datasetsearch.research.google.com/

### Toy Datasets [★★]
Scikit-learnが提供するチュートリアルデータセット群．小規模，かつ，複雑な前処理を要しないため，モデルの構築に注力して学習することができる．

https://scikit-learn.org/stable/datasets/toy_dataset.html

### iris dataset [★★]
iris（アヤメ/花の属の1つ）の種類を判定するタスクを提供するデータセット．よく用いられる初学者向けのチュートリアルデータセットの1つ．Scikit-learnやSeabornなど，複数のライブラリで提供されている．

### wine dataset [★★]
wine（ワイン）の種類を判定するタスクを提供するデータセット．よく用いられる初学者向けのチュートリアルデータセットの1つ．

### moons [★★★]
Scikit-learnで提供されているデータセットの1つ．三日月状にプロットされたデータをクラスタリング（あるいは分類）するためのチュートリアルデータセット．

### Mixed National Institute of Standards and Technology database (MNIST) [★★]
0~9の手書き文字を分類するタスクを提供するデータセット．深層学習向けのチュートリアルデータセットの1つ．複数のライブラリで提供されている．

https://www.tensorflow.org/datasets/catalog/mnist

https://pytorch.org/vision/main/generated/torchvision.datasets.MNIST.html

### FashionMNIST [★★]
10種類のファッション商品を分類するタスクを提供するデータセット．深層学習向けのチュートリアルデータセットの1つ．複数のライブラリで提供されている．

https://www.tensorflow.org/datasets/catalog/fashion_mnist

https://pytorch.org/vision/main/generated/torchvision.datasets.FashionMNIST.html#torchvision.datasets.FashionMNIST

### Image-Net [★★★]
ILSVRC (ImageNet Large Scale Visual Recognition Challenge) という画像認識コンペで利用されたデータセット群の総称．画像認識精度のベンチマークとしてよく利用されるデータセットの1つ．

https://www.image-net.org/

### CIFAR-10 [★★]
画像分類タスクを提供するデータセット．カラー画像を10種類に分類するタスクであり，大規模データセットでの深層学習モデルに関するチュートリアルデータセットの1つ．複数のライブラリで提供されている．

https://www.tensorflow.org/datasets/catalog/cifar10

https://pytorch.org/vision/main/generated/torchvision.datasets.CIFAR10.html

### CIFAR-100 [★★★]
CIFAR-10のクラス数が100種類になったデータセット．

https://www.tensorflow.org/datasets/catalog/cifar100

https://pytorch.org/vision/main/generated/torchvision.datasets.CIFAR100.html

## 2.3. サンプリング

### バイアス [★★★]
データの収集や抽出，モデルの評価などにおいて，特定の要素や特徴が強調，あるいは抑制されること．例えば，データセットの収集において，特定の地域や特定の年齢層のデータのみを用いてしまう，といった例が挙げられる．

### ランダムサンプリング [★★]
データセットからランダムにデータを抽出する手法．データセット全体の特徴を反映することができる．

### Stratified Sampling Method (層化抽出法) [★★★]
データセットの分割手法の1つ．データセット全体の偏りと一致するように，データを抽出する手法．データセットのクラスに大きな偏りが見られる場合に効果的である．

## 2.4. 前処理

### Tokenizer (トークナイザ) [★★★]
自然言語処理において，テキストを単語や文字などの単位に分割する処理を行うツール．特に日本語においては形態素解析のことを指すことも多い．

### Bag of Words (BoW) [★★★]
自然言語処理において，テキストを単語の出現回数をもとにベクトル化する手法．

### Term Frequency-Inverse Document Frequency (TF-IDF) [★★★]
自然言語処理において，テキストを単語の出現回数をもとにベクトル化する手法．BoWと比較して，単語の重要度を考慮することができる．

#### Word2Vec [★★★]
単語をベクトル化する手法の1つ．単語の意味をベクトルとして表現することができる．

### 標準化 [★★]
データの平均を0，分散を1にする処理．特徴量のスケールを揃えるためにおこなう．

### 正規化 [★★]
データの範囲を0~1にする処理．特徴量のスケールを揃えるためにおこなう．

### Pipeline [★★★]
データの前処理を一連の処理としてまとめる手法．必須の機能ではないが，大規模なデータセットを扱う際には有用である．

## 2.5. 入力

### batch learning (バッチ学習 / オフライン学習) [★★]
データセット全体を一度に学習する手法．単純な手法で実装が容易であるが，データセット全体をメモリに読み込む必要があるため，小規模なデータセットに対してのみ適用可能である．

### mini batch learning (ミニバッチ学習 / オンライン学習) [★★]
データセットを複数の小さなバッチに分割して学習を行う手法．データセット全体を一度に読み込む必要がないため，大規模なデータセットに対しても適用可能であるが，実装がやや複雑になる点や学習の安定性が低い点がある．

### 特徴量 [★★]
データセットの各要素に対して，その特徴を表す値．あるいは，単にモデルに入力するデータのことを指すこともある．

### ラベル [★★]
データセットの各要素に対して，その正解を表す値．目的変数とも．

### インスタンス [★★]
データセットの各要素のこと．


# 3. アルゴリズムとモデル

## 3.1. 古典学習

:::note
本記事では，統計的アルゴリズムに基づく学習モデルを深層学習と対比して古典学習と表現しています．従来型の機械学習モデルや伝統的な機械学習モデルとも表現されることがあります．
:::

### instance-based model (インスタンスベースモデル) [★★]
データセットの各要素に対して，その近傍のデータを参照して予測を行うモデル．k-NNなどが代表的なモデルである．その特性から，学習コストは低いが，予測コストは高いため，大規模なデータセットには適用が困難である．

### model-based model (モデルベースモデル) [★★]
データセットからモデルを構築し，そのモデルを利用して予測を行うモデル．SVMや決定木などが代表的なモデルである．その特性から，学習コストは高いが，予測コストは低いため，大規模なデータセットにも適用が可能である．

### k-Nearst Neighbors (k-NN / k近傍法) [★★]
インスタンスベースモデルの1つ．データセットの各要素に対して，その近傍のデータのクラスを参照して，その多数決を予測結果とする手法．

### Decision Tree (DT / 決定木) [★★]
モデルベースモデルの1つ．データセットの各要素に対して，その特徴量をもとに木構造を構築し，その木構造を利用して予測を行う手法．

### Random Forest (RF / ランダムフォレスト) [★★]
モデルベースモデルの1つ．複数の決定木を生成し，その多数決を予測結果とする手法．一般的な問題に対して高い性能を発揮することが多いため，データセットの特性を検証するために利用されることも多い．

### Gradient Boosting Decision Tree (GBDT / 勾配ブースティング決定木) [★★]
モデルベースモデルの1つ．複数の決定木を生成し，その誤差を補正するように次の決定木を生成する手法．一般的な問題に対して高い性能を発揮することが多いため，データセットの特性を検証するために利用されることも多い．

### Logistic Regression (LR / ロジスティック回帰) [★★]
モデルベースモデルの1つ．線形回帰を分類問題に適用した手法．

### Support Vector Machine (SVM / サポートベクターマシン) [★★]
モデルベースモデルの1つ．データセットを分類する超平面を見つけ，その超平面を利用して予測を行う手法．

### t-distributed Stochastic Neighbor Embedding (t-SNE / t分布型確率的近傍埋め込み) [★★]
高次元のデータを低次元に埋め込む次元削減手法の1つ．主に可視化に利用される．

### Naive Bayes (NB / 単純ベイズ) [★★]
モデルベースモデルの1つ．ベイズの定理を利用して，データセットのクラスを予測する手法．ベイズの定理は，互いの特徴量が独立で相関がない問題を前提としているが，一般的な問題についても高い性能を発揮することが知られている．

### Generative Adversarial Network (GAN / 敵対的生成ネットワーク) [★★★]
生成モデルの1つ．2つのモデル（生成モデルと識別モデル）を競合させることで，データセットの分布に近いデータを生成する手法．

### Multi-Layer Perceptron (MLP / 多層パーセプトロン) [★★]
モデルベースモデルの1つ．神経細胞を模倣したモデルであり，文脈によるが，全結合モデルを指すことが多い．（また，多数の層からなるモデルは深層学習モデルと呼ばれるが，何層から深層学習モデルと呼ぶかという明確な基準はない．）


## 3.2. 深層学習
:::note
深層学習は，MLP（多層パーセプトロン）の一部とする見方もあるが，近年の様々なアーキテクチャの発展により，独立した分野として扱われることが多いため，本記事でもそれに習って独立した章を設けます．
:::

### Artificial Neural Network (ANN / 人工ニューラルネットワーク) [★]
神経細胞を模倣したモデル．重みとバイアス，活性化関数の3つの要素からなる．なお，ここでいうバイアスとは，単なる変数であり，偏りを表すものではない．

:::note
個人的な感想ですが，最近ではあまり言わない表現という気がします．ただ，深層学習に踏み入れた時に，初めに説明されることが多いため，評価を★としています．
:::

#### Fully Connected (FC / 全結合) [★★]
NNの1つ．前の層の全てのノードが次の層の全てのノードと結合しているモデル．深層学習モデルの基本となるモデルである．

#### Hidden Layer (隠れ層) [★★]
NNの1つ．入力層と出力層の間に存在する層．

### Convolutional Neural Network (CNN / 畳み込みニューラルネットワーク) [★★]
NNの1つ．畳み込み層とプーリング層を持つモデル．元は画像認識に特化したモデルであったが，その特性から音声認識や自然言語処理などにも応用されるようになった．

#### Convolutional Layer (畳み込み層) [★★]
CNNの要素の1つ．入力データの特徴を抽出するための層であり，カーネルと呼ばれる小さな行列を入力データに作用させることで，特徴を抽出する．

#### Pooling Layer (プーリング層) [★★]
CNNの要素の1つ．畳み込み層の出力を縮小するための層であり，Max PoolingやAverage Poolingなどが代表的な手法である．抽象的には，僅かな位置の変化に対して頑健な特徴を抽出するための手法である．

### Recurrent Neural Network (RNN / 再帰型ニューラルネットワーク) [★★]
NNの1つ．時系列データに特化したモデルであり，過去の情報を保持するためのメモリを持つ．

#### Long Short-Term Memory (LSTM / 長短期記憶) [★★★]
RNNの1つ．同様に過去の情報を保持するためのメモリを持つが，忘却ゲートや入力ゲート，出力ゲートを持つことで，過去の情報を効率的に保持することができ，RNNに比べて長期的な依存関係を学習することが可能である．

#### Gated Recurrent Unit (GRU / ゲート付き再帰ユニット) [★★★]
RNNの1つ．LSTMと同様に過去の情報を保持するためのメモリを持つが，LSTMよりもシンプルな構造を持つ．

### 活性化関数 [★★★]
非線形，かつ，微分可能な関数．深層学習モデルが非線形な関数を近似するために必要である．

#### tanh (双曲線正接関数) [★★★]
実数全体の入力に対して，-1~1の範囲の出力を返す関数．

#### sigmoid (シグモイド関数) [★★★]
実数全体の入力に対して，0~1の範囲の出力を返す関数．

$$
\sigma(x) = \frac{1}{1 + e^{-x}}
$$

#### softmax (ソフトマックス関数) [★★★]
0~1の範囲で出力を返すが，全ての出力の和が1になるように正規化される関数．確率を出力したい場合に利用される．

$$
\text{softmax}(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{n} e^{x_j}}
$$

#### Rectified Linear Unit (ReLU) [★★★]
入力が0以下の場合は0を，それ以外の場合はそのまま出力する関数．入力が0のときに微分不可能であるが，実際の実装では導関数を別に定義することで微分可能な関数として扱われる．また経験則から，深層学習モデルにおいて最もよく利用される活性化関数である．
派生系には，SeLUやLeaky ReLUなどがある．

$$
\text{ReLU}(x) = \max(0, x)
$$

### Training (学習) [★]
データセットから自動的にパターンや特徴を習得すること．特に，深層学習モデルにおいてはモデルが持つパラメータを調整することを指す．

#### Iteration (イテレーション) [★★★]
モデルのパラメータの更新を1回行うこと．

#### Epoch (エポック) [★★★]
データセット全体を1回学習すること．Epochは複数のIterationからなる．

#### 学習率 [★★★]
モデルのパラメータを更新する際のステップサイズ．学習率が大きすぎると安定性に欠けるが，小さすぎると学習が進まない．

#### 勾配 [★★★]
損失関数のパラメータに対する微分．モデルのパラメータを更新する際に利用される．

#### 自動微分 [★★★★]
損失関数のパラメータに対する微分を自動的に計算する手法．深層学習では自動微分の計算結果を利用して，モデルのパラメータを更新する．

#### Backpropagation (誤差逆伝播) [★★]
誤差を出力層から入力層に向かって逆伝播させる手法．誤差を最小化するためのパラメータの更新に利用される．深層学習を実現するための基本的な手法である．

### Architecture (アーキテクチャ) [★★]
モデルの構造．深層学習モデルにおいては，畳み込み層や全結合層などの層の組み合わせを指すことが多い．

#### Residual Connection (残差接続) [★★★★]
深層学習モデルの1つ．層の出力を次の層の入力に加算する手法．恒等写像を学習することができるため，経験的に，層を深くする際に勾配消失問題を緩和することが知られている．

#### Encoder (エンコーダ) [★★★]
深層学習モデルの1つ．入力データを低次元の表現に変換する手法．

#### Decoder (デコーダ) [★★★]
深層学習モデルの1つ．エンコーダで変換された低次元の表現を元の次元に戻す手法．

#### Dropout (ドロップアウト) [★★★]
深層学習モデルの1つ．学習時にランダムにノードを無効化する手法．過学習を抑制する効果がある．


## 3.3. Transformer
:::note
Transformerは，深層学習の一分野であるが，近年の目覚ましい発展により，本記事では独立した章を設けます．
:::

### Attention [★★★]
Transformerの基本的な要素の1つ．入力シーケンスの要素間の関連性を計算し，その重要度を反映した出力を生成する手法．従来の逐次的な処理をおこなうアーキテクチャとは異なり，シーケンス全体を一度に処理するため，並列化が容易である．

#### Self-Attention [★★★★]
Attentionの一種．入力データの各要素に対して，それ自身に関連する要素の重みを計算する手法．

#### Multi-Head Attention [★★★★]
Self-Attentionの一種．複数のSelf-Attentionを組み合わせる手法．複数の視点からデータを見ることができるため，表現力が向上する．

### Prompt (プロンプト) [★]
特に，Transformerモデルにおいて，入力データに対して，その処理方法を指示するための指示文のこと．これを工夫することで，モデルの挙動を制御できるだけでなく，性能が向上することが知られている．

#### Chain of Thought (CoT) [★★]
Promptの一種．入力に結果を得るまでの思考過程を記述する方法，あるいは，モデルに思考過程を出力するように指示する方法．単に回答を求めるよりも，正確な回答が得られることが知られている．

#### Zero-Shot [★★★]
Promptの一種．入力に正解例を与えずに，モデルに問題を解かせる手法．

#### One-Shot [★★★]
Promptの一種．入力に1つの正解例を与えて，モデルに問題を解かせる手法．

#### Few-Shot [★★★]
Promptの一種．入力に複数の正解例を与えて，モデルに問題を解かせる手法．

### Generative Pre-trained Transformer (GPT) [★★★]
Transformerの一種で，デコーダのみからなるモデル．文章生成に高い性能を示すことが知られている．

### Bidirectional Encoder Representations from Transformers (BERT) [★★★]
Transformerの一種で，エンコーダのみからなるモデル．文章理解に高い性能を示すことが知られている．


# 4. 評価

## 4.1. Metrics (評価指標) 

### Accuracy [★]
全体の予測結果のうち，正解した割合を表す指標．

$$
\text{Accuracy} = \frac{\text{True Positive} + \text{True Negative}}{\text{True Positive} + \text{True Negative} + \text{False Positive} + \text{False Negative}}
$$

> 上式は，二値分類の場合．

### Precision (適合率) [★★]
陽性であると予測したもののうち，実際に陽性である割合を表す指標．

$$
\text{Precision} = \frac{\text{True Positive}}{\text{True Positive} + \text{False Positive}}
$$

> 上式は，二値分類の場合．

### Recall (再現率) [★★]
実際に陽性であるもののうち，陽性であると予測された割合を表す指標．

$$
\text{Recall} = \frac{\text{True Positive}}{\text{True Positive} + \text{False Negative}}
$$

> 上式は，二値分類の場合．

### F1-Score [★★]
PrecisionとRecallの調和平均を表す指標．

$$
\text{F1-Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
$$

### Fβ-Score [★★★]
PrecisionとRecallの調和平均を表す指標．F1-Scoreの一般化．

$$
\text{Fβ-Score} = (1 + \beta^2) \times \frac{\text{Precision} \times \text{Recall}}{\beta^2 \times \text{Precision} + \text{Recall}}
$$


### 4.2. loss function (損失関数) [★★★]
モデルの予測結果と正解ラベルとの誤差を表す関数．モデルの学習において，この損失関数を最小化することが目的となる．

#### Mean Squared Error (MSE / 平均二乗誤差) [★★★]
予測結果と正解ラベルとの差の2乗の平均を算出する関数．回帰問題に利用されることが多い．

$$
\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
$$

#### Root Mean Squared Error (RMSE / 平均二乗平方根誤差) [★★★]
MSEの平方根を算出する関数．回帰問題に利用されることが多い．

$$
\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}
$$

#### Mean Absolute Error (MAE / 平均絶対誤差) [★★★]
予測結果と正解ラベルとの差の絶対値の平均を算出する関数．回帰問題に利用されることが多い．

$$
\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|
$$

#### Cross Entropy (交差エントロピー) [★★★]
予測結果と正解ラベルとのエントロピーを算出する関数．分類問題に利用されることが多い．

$$
\text{Cross Entropy} = -\sum_{i=1}^{n} y_i \log(\hat{y}_i)
$$

#### Receiver Operatorating Characteristic curve (ROC曲線) [★★★]
分類問題において，真陽性率と偽陽性率の関係を表す曲線．

#### Area Under the Curve (AUC / 曲線下面積) [★★★]
ROC曲線の下の面積を表す指標．分類問題に利用されることが多い．


## 4.3. 評価手法

### Hold-Out [★★★]
データセットを学習用と評価用に分割し，学習用データでモデルを学習し，評価用データでモデルの性能を評価する手法．

### Leave One Out [★★★]
データセットのうち1つを除いたデータでモデルを学習し，除いたデータでモデルの性能を評価する手法．データセットごとの特徴に差が見られる場合の評価に用いられることが多い．


# 5. 学習

## 5.1. 学習手法

### Supervised Learning (教師あり学習) [★]
正解ラベルを用いてモデルを学習する手法．正解ラベルが必要であるため，データセットの作成にコストがかかる．

#### Regression (回帰) [★]
連続値を予測する問題．

#### Classification (分類) [★]
離散値を予測する問題．

### Unsupervised Learning (教師なし学習) [★]
正解ラベルを用いずにモデルを学習する手法．正解ラベルが不要であるため，データセットの作成にコストがあまりかからない．

#### Principal Component Analysis (PCA / 主成分分析) [★★]
多変数データの特徴を捉えるための手法．教師なし学習の1つ．

#### 次元削減 [★★]
データセットの次元を削減する手法．教師なし学習の1つ．

#### 異常検知 [★]
正常なデータと異常なデータを分類する手法．教師なし学習の1つ．

#### クラスタリング [★★]
データセットをクラスタに分割する手法．教師なし学習の1つ．

### Semi-Supervised Learning (半教師あり学習) [★★★]
正解ラベル付きデータと正解ラベルなしデータを用いてモデルを学習する手法．正解ラベル付きデータが少ない場合に有効である．

### Reinforcement Learning (強化学習) [★★★]
報酬を最大化するようにモデルを学習する手法．通常の機械学習とは異なり，エージェントや環境，報酬，方策といった要素からなる．


## 5.2. ターゲット

### 自然言語処理 [★★]
自然言語（英語や日本語など）を扱う操作．機械翻訳や文章生成，要約などが代表的なタスクとして挙げられる．

#### 画像処理 [★★]
画像や動画を扱う操作．物体検出や動画生成，ブラー処理などが代表的なタスクとして挙げられる．

#### 音声処理 [★★]
音声を扱う操作．音声認識や音声合成，音楽生成などが代表的なタスクとして挙げられる．


## 5.3. 最適化 [★★]
モデルを学習させることで，ターゲットとするタスクに対する性能を最大化すること．

### オプティマイザ [★★★]
モデルの最適化を実現するソフトやシステム．あるいは，アルゴリズムを指す場合もある．

#### Adam [★★★]
最適化アルゴリズムの1つ．現在，多くの深層学習モデルにおいて最もよく利用されるものの1つである．

### 過学習 [★★]
学習データに対しては高い性能を示すが，未知のデータに対しては低い性能を示す現象．機械学習モデルは，一般的に未知のデータに対して運用されるため，過学習を抑制することが重要である．

### 過小適合 [★★]
学習データに対しても未知のデータに対しても低い性能を示す現象．

### 汎化 [★★]
未知のデータに対しても高い性能を示すこと．機械学習モデルにおいては，汎化性能を高めることが重要である．

### ハイパーパラメータチューニング [★★★]
モデルの学習において，ハイパーパラメータ（学習前に決定しておくパラメータのこと）を調整すること．ハイパーパラメータの調整により，モデルの性能を最大化することが目的である．

#### Grid Search (グリッドサーチ) [★★★]
ハイパーパラメータの組み合わせを全て試す手法．

#### Random Search (ランダムサーチ) [★★★]
ハイパーパラメータの組み合わせをランダムに試す手法．


# 6. その他

## Application Programming Interface (API) [★★]
ソフトウェア同士が情報をやり取りするためのインターフェース．機械学習では，基本的にAPIを利用して開発を進める．

### 低水準API [★★★]
ハードウェアやOSに近いレベルでのAPI．

### 高水準API [★★★]
ユーザに近いレベルでのAPI．

## アンサンブル学習 [★★★]
複数のモデルを組み合わせて予測を行う手法．多数決や重みつけ平均など，様々な手法がある．

## 転移学習 [★★★]
あるタスクで学習したモデルやその一部を，別のタスクに適用する手法．

## 計算量 [★★★]
プログラムの実行に要する時間やリソースを評価する指標．主要なものに，時間計算量や空間計算量がある．

### FLOPs [★★★★]
計算量の1つ．モデルの1回の推論で行う浮動小数点演算の回数を表す指標．値が大きいほど，計算量が多いことを示す．（大きいほど時間がかかる．）

### FLOPS [★★★★]
1秒間に浮動小数点演算を何回行えるかを表す指標．値が大きいほど，計算性能が高いことを示す．（大きいほど時間がかからない．）

## 事前確率 [★★]
事象が発生する前の確率．語弊を恐れずにわかりやすく言えば，普通の確率のこと．

## 事後確率 [★★]
事象が発生した後の確率．条件付き確率とも．

$$
P(A|B) = \frac{P(A \cap B)}{P(B)}
$$

## 推論 [★★]
モデルを利用して予測を行うこと．

## チューリングテスト [★★★★]
人工知能が人間と区別がつかないような振る舞いをするかどうかを判定するためのテスト．

## ノーフリーランチ定理 [★★★★]
どんな問題に対しても最適なモデルやアルゴリズムは存在しないという定理．

## 解釈可能性 [★★★]
モデルの予測結果を解釈することができるかどうか．機械学習の進歩に伴い，モデルにできることが増加しているため，信頼性が求められてきているが，その要素の1つとして重要視されている．

## General Artificial Intelligence (GAI / 汎用人工知能) [★★]
特定の用途や目的に限定されず，自律的に行動，学習，推論を行う人工知能のこと．（少なくとも現時点では）これに相当する技術は存在しない．Artificial General Intelligence (AGI) とも．


# 修正履歴
- 2024.03.10: 投稿
- 同日: タイトルの修正
    - 編集時の仮タイトルで投稿してしまったため，タイトルを変更した．