🤖

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

2022/05/11に公開約9,900字

はじめに

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

大分類

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

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

全体像

(執筆中)

教師あり学習

概要

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

主なタスク

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

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

時系列予測

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

実用例

株価予測
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

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

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

実用例

自動運転
ADAS と自動運転システムの設計、シミュレーション、およびテスト

医療画像解析
Deep Learningが医療向けVR/MRサービスでどう活用されたのか

主要なアルゴリズム

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

強化学習(執筆中)

概要

執筆中

実用例

執筆中

主要なアルゴリズム

執筆中

おわりに

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

最後に、弊社では絶賛エンジニア募集中なので、気になる方は以下を覗いてみてくださいmm

https://www.wantedly.com/companies/sweeep/projects

Discussion

ログインするとコメントできます