はじめに
機械学習の分野はとても広いです.
実務では特定の技術だけでなく様々なものをうまく組み合わせて問題解決することが求められるため、
全ての技術を詳細に知る必要はないですが、全体を把握しておくことは重要です.
大分類
大きく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://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がありますが、
まずどんなタスクがありそれぞれどんなアルゴリズムがあるのかということを知っておくと最適な解決策に早くだどりつくことができます.
また、全体像を把握しておくことで学習の指針にもなります.
この記事が少しでも参考になれば幸いです.