🤖

機械学習の全体像をまとめてみた

2022/05/11に公開

はじめに

機械学習の分野はとても広いです.
実務では特定の技術だけでなく様々なものをうまく組み合わせて問題解決することが求められるため、
全ての技術を詳細に知る必要はないですが、全体を把握しておくことは重要です.

大分類

大きく3つに分けられます.

  • 教師あり学習: データから何かしら予測
  • 教師なし学習: データに隠れた構造を抽出
  • 強化学習: 最適な行動を学習

全体像

教師あり学習 教師なし学習 強化学習
学習対象 正解 構造
特徴
最適な行動
実用例 翻訳
災害予測
自動運転
異常検知
レコメンド
ゲームAI
ロボットの自動制御
タスク 2値分類
画像分類
物体検出
セグメンテーション
画像生成
文章分類
翻訳
文章生成
時系列予測
クラスタリング
次元圧縮

価値最大化
アルゴリズム(非NN) ロジスティック回帰
パーセプトロン
SVM
決定木
状態空間モデル
PCA
NMF
LLE
Kmeans
Fazzy-CMeans
Q学習
Actor-Critic
アルゴリズム(NN系) MLP
CNN
FCN
UNet
RNN
Transformer
GAN
AutoEncoder
VAE
DQN
A3C

教師あり学習

概要

入力値から何かしらの予測をしたい場合を考えます.
予測する対象の正解データが事前に得られる場合、
入力値から正解データを出力するモデルを学習する手法を教師あり学習と言います.

主なタスク

何を入力して、何を出力するかでタスクが分類されます.
代表的なものに以下が挙げられます

  • 時系列予測: 現在以前の時系列データ ⇒ 未来の時系列データ
  • 画像分類: 画像 ⇒ ラベル
  • 物体検出: 画像 ⇒ 物の位置と種類
  • セグメンテーション: 画像をピクセル単位で分割
  • 文章分類: 文章 ⇒ ラベル
  • 機械翻訳: ある言語の文章 ⇒ 別の言語の文章

時系列予測

現在以前のデータから将来のデータを予測します.

実用例

株価予測
https://logics-of-blue.com/stock-price-forecast-by-arima/#:~:text=時系列解析とは,手法の一つです。

災害予測
https://built.itmedia.co.jp/bt/articles/2202/22/news029.html

自動車の事故防止システム
https://www.lnews.jp/2015/10/h102817.html

主要なアルゴリズム

自己回帰モデル(AR・MA・ARMA・ARIMA)
時系列間の関係を数学的に定量化、モデル化する.
周期性のあるデータだと精度が出やすいです.
https://logics-of-blue.com/stock-price-forecast-by-arima/

状態空間モデル
観測できない隠れた状態というデータを組み込みます.
非常に柔軟にモデリングできます.
https://unaoya-sigma.hatenadiary.jp/entry/car_sail

決定木系
端的に言うと条件分岐のルールを学習するモデルのことです.
入力に過去、出力に未来のデータを使い、ルールを学習させます.

random foreset, 勾配ブースティングが有名
チューニングが楽で、割と精度でやすいです.
https://qiita.com/ynakayama/items/6a472e5ebbe9365186bd
https://dev.classmethod.jp/articles/2017ad_20171211_dt-2/

RNN系
ニューラルネットをループさせて長さが可変の入力値でも学習できます.
可変長の時系列データを予測RNN系が使えます.
派生のLSTMをよく使います.
https://qiita.com/kazukiii/items/df809d6cd5d7d1f57be3
https://qiita.com/KojiOhki/items/89cd7b69a8a6239d67ca

Transformer
Attentionだけの可変長のエンコーダとデコーダです.
翻訳によく使われるが、時系列にも使えます.
https://qiita.com/omiita/items/72998858efc19a368e50

gMLP
MLPベースの手法で、Googleが2021に発表しました.
Attentionの必要性に疑問を持ち、MLPで頑張ったらTransformerと同様の精度出ました.
Transformerの有用性がないというわけでななく、
自然言語の特定のタスク以外ではTransformerの有用性が低いを示しています.
https://deepsquare.jp/2021/05/gmlp/

画像分類

画像からラベルを出力します.

実用例

製造業での製品の検査
https://products.sint.co.jp/aisia-ad/blog/what-is-quality-inspection

ネットオークションで出品時の項目の自動入力
https://engineering.mercari.com/blog/entry/2017-12-23-100000/

主要なアルゴリズム

SVM
クラスの間を分類するような分離面を求めます.
分離面と各データの距離をマージンといいマージンが最大になるようにします.
https://aiacademy.jp/media/?p=248

MLP
ニューラルネットを多層にしたものです
基本は線型な結合と活性化関数による非線形変換の繰り返しです.
https://ai-scholar.tech/articles/image-recognition/mlp-mixer

CNN(VGG, ResNet, ...etc)
画像に特化したニューラルネットです.
畳み込みというアルゴリズムで特徴抽出です.
https://ai-kenkyujo.com/ai-architecture-02/
https://ai-scholar.tech/articles/image-recognition/VGG_back

物体検出

画像から物体の領域とラベルを出力します.

実用例

自動運転
https://tech.tier4.jp/entry/2020/06/03/163000

画像の文字検出
https://www.ieice.org/~iss/jpn/Publications/issposter_2019/data/pdf/ISS-SP-036.pdf

監視システム
https://www.mhi.co.jp/technology/review/pdf/562/562030.pdf

主要なアルゴリズム

FasterRCNN
ニューラルネットのみで領域とラベルを学習します.
これ以前は領域の抽出にSelectiveSearchと言うニューラルネット以外を使っていたため、E2Eで学習できませんでした.
ニューラルネットのみでE2Eで学習可能になり、かつ精度と速度も向上したため、大きなブレイクスルーとなりました.
https://blog.negativemind.com/2019/02/20/general-object-recognition-faster-r-cnn/

SSD
シングルショット検出器
FasterRCNNでは領域候補の抽出と領域とラベルと同時に出力します.
FasterRCNNと同等の精度で、より高速です
ただし小さい物体は苦手
https://blog.negativemind.com/2019/02/26/general-object-recognition-single-shot-multibox-detector/
https://jonathan-hui.medium.com/object-detection-speed-and-accuracy-comparison-faster-r-cnn-r-fcn-ssd-and-yolo-5425656ae359

DETR
Attentionを物体検出に適用しています.
https://club.informatix.co.jp/?p=1265

セマンティックセグメンテーション

画像をピクセル単位で分類し、領域分割をします.

実用例

自動運転
https://jp.mathworks.com/products/automated-driving.html

医療画像解析
https://atmarkit.itmedia.co.jp/ait/articles/1803/14/news150.html

主要なアルゴリズム

FCN
fully convolutional networkの略
cnnだけでセグメンテーションできる
https://blog.negativemind.com/2019/03/11/semantic-segmentation-by-fully-convolutional-network/

U-net
文字通りU字型のネットワークで、エンコーダ&デコーダの構造になります.
エンコードした情報だけでは、正確なセグメントをエンコードできないので、エンコードとデコーダの各層を接続するのが特徴です.
https://www.skillupai.com/blog/tech/segmentation2/

文章分類

文章からラベルを出力します.

実用例

コメントの自動削除
https://alt.ai/news/news-1163/

スパムメールの検知
https://signate.jp/competitions/104

主要なアルゴリズム

ロジスティック回帰
古典的ですが、解釈がしやすく、分析しやすい
https://poniti.hatenablog.com/entry/2020/01/02/185114

RNN
ニューラルネットをループさせて長さが可変の入力値でも学習できる
可変の長さの文章を入力してラベルを出力させることが可能
https://qiita.com/Kosuke-Szk/items/43f330b0888f8e696c3f

BERT
Bertで事前学習されたエンコーダーで文章をベクトル化して、任意の識別器で分類します.
https://www.ai-shift.co.jp/techblog/2089

ELECTRA
2020のGoogleが発表しました.
Bertを超える精度でかつ推論も早いです.
GANの枠組みをBertに適用しています.
https://cinnamon.ai/ideas/2020/06/22/20200619_research_001/
https://www.softbanktech.co.jp/special/blog/dx_station/2021/0038/#content02

機械翻訳

ある文章を多言語に変換します.

実用例

GNMT(Google Neural Machine Translation)
https://www.crimsonjapan.co.jp/blog/where_machine_translation_has_reached/

DeepL
https://www.deepl.com/ja/translator

主要なアルゴリズム

SequenceToSequence
RNNベースの方法です.
エンコーダーで特徴抽出し、エンコーダーで他言語を出力します.
https://blog.octopt.com/sequence-to-sequence/

Transformer
Attentionのみでエンコーダー、デコーダーを実装
https://crystal-method.com/topics/transformer-2/

Bert
Googleさんの有名なやつです.
Bidirectional Encoder Representations from Transformersの略で、日本語だとトランスフォーマーからの双方向エンコーダー表現
Transformerのエンコーダーを用いて、事前学習する際に使われます.
https://to-in.com/blog/104275
https://ledge.ai/bert/

教師なし学習

概要

特定の正解を与えずに、学習させる手法です.
データに隠れた特徴を抽出する際に使います.

主なタスク

クラスタリング
データを似ているものでグループ化

次元削減
データの次元を減らす

クラスタリング

データ集合の各サンプルを似ているものをグループ化します.
あるサンプルを1つにクラスに割り当てるハードクラスタリング
あるサンプルを複数にクラスに割り当てるソフトクラスタリングがあります

実用例

異常検知
Kmeansベースで異常検知するXBOSと言うアルゴリズムについて書かれています.
https://www.scutum.jp/information/waf_tech_blog/2018/03/waf-blog-054.html

レコメンド
(執筆中)

主要なアルゴリズム

Kmeans
ソフトクラスタリングとハードクラスタリング両方あります.Hard-Kmeans, Soft-Kmeans)
サンプルにクラスを割り当ててから、以下を繰り返します.
中心点を求める ⇒ サンプルに中心点が一番近いクラスを割り当て
https://aiacademy.jp/media/?p=254

Fuzzy C means
ソフトクラスタリングの手法です.
ファジィ理論に基づくクラスタリングします.
サンプルが複数のクラスに所属できるのが特徴.
例: インドア: 0.7, アウトドア: 0.3
https://qiita.com/dr_paradi/items/50213a8c00a7b862d922

次元削減

データの次元を減らすことで、要約します.

実用例

前処理で特徴抽出
一般的に、次元数が多いほど学習の難易度が上がります
必要な情報を残しつつ不要な情報を削れば、より学習しやすくなり、精度Upにつながります.
https://atmarkit.itmedia.co.jp/ait/articles/2006/29/news023.html

可視化
https://blog.brainpad.co.jp/entry/2022/03/09/160000

主要なアルゴリズム

PCA(主成分分析)
https://aiacademy.jp/media/?p=256

NMF(非負値行列因子分解)
https://thinkit.co.jp/article/17411

LLE(Locally Linear Embedding)
https://www.hellocybernetics.tech/entry/2017/07/06/133450

AutoEncoder
https://qiita.com/LicaOka/items/1f4d1131af05fe30674e

VAE
https://qiita.com/kenmatsu4/items/b029d697e9995d93aa24

強化学習(執筆中)

概要

最適な行動を学習します。
教師ありでは、ある入力に対して正解となる出力が与えられましたが、現実では、明確に正解がわからないが、結果としていい選択だったかがわかるような場合は多いかと思います。例えば、ゲームではプレーヤーが様々な意思決定を行った結果として、最終的な勝ち負けが決まります。
このように、一意な正解がわからないが、その結果から各意思決定の良し悪しを評価できるような場合に、強化学習は有用です。
強化学習では、一意な正解を与えずに、長期的な価値を最大化するよう学習します。

主なタスク

価値の最大化

実用例

ゲームAI
https://www.sbbit.jp/article/cont1/58531
ロボットの自動操縦
https://xtech.nikkei.com/atcl/nxt/mag/rob/18/012600001/00095/

主要なアルゴリズム

  • Q-learning
  • Actor-Critic
  • DQN
  • A3C

おわりに

機械学習の分類と主要なタスクおよびアルゴリズムについてまとめてみました.
実務では実際の問題とタスクに落とし込み、アルゴリズムを選定というStepがありますが、
まずどんなタスクがありそれぞれどんなアルゴリズムがあるのかということを知っておくと最適な解決策に早くだどりつくことができます.
また、全体像を把握しておくことで学習の指針にもなります.
この記事が少しでも参考になれば幸いです.

最後に、弊社では絶賛エンジニア募集中なので、気になる方は以下を覗いてみてくださいmm
https://www.wantedly.com/companies/sweeep/projects

Discussion