機械学習
目次
機械学習
基礎
- 未定義の値はパラメータ、説明はモデル
- 典型的には、学習と推論の2段階でアルゴリズムを調べる
- 学習段階での目的は、特徴モデルと呼ばれるデータを記述し、モデルに要約すること
- 特徴ベクトルは、実際のデータを単純化したもの、学習・推論のステップはデータそのものではなく、特徴ベクトルに依存
- 測定する値とどの測定値を比較すべきかの設計は、特徴量設計と呼ばれる
- 調べる特徴の数が多すぎるとパフォーマンスが低下する可能性(次元の呪い)
- 同一性は構成されている特徴に分解される
学習アプローチ
- 訓練データ
- 特徴ベクトル
- 学習アルゴリズム
- モデル
推論アプローチ
- テストデータ
- 特徴ベクトル
- モデル
- 予測
距離の測定
学習のタイプ
教師あり学習
- モデルと呼ばれるラベル付きデータを必要とする
- 訓練データセットと呼ばれる例の集まりを使用する
教師なし学習
強化学習
- 環境が行動によりどう反応するかを観察することで収集される情報を訓練する
- どのような行動の組み合わせが最も有利な結果をもたらすかを知るため
アルゴリズム
アルゴリズム | 用途 | 備考 |
---|---|---|
線形回帰 | トレンドの予測 | |
ロジスティクス回帰 | データを2つのカテゴリに分類し、データセットを分割する最善の方法を見つける | |
多クラスタロジスティクス回帰 | データを複数のカテゴリに分類する | |
隠れマルコフモデル(ビタビ) | 最も可能性の高い隠れた理由を見出す | |
k平均法 | 固定数のカテゴリにクラスタリングし、自動的に分割 | |
自己組織化マップ | 任意のカテゴリにクラスタリングし、高次元データを2次元平面上へ非線形写像する | |
オートエンコーダ | 入力されたデータを一度圧縮し、重要な特徴量だけを残した後、再度もとの次元に復元 | |
Qポリシーニューラルネットワーク | ニューラルネットワークを用いた環境での強化学習 | |
パーセプトロン | 教師ありニューラルネットワークを用いたデータの分類 | |
畳み込みニューラルネットワーク | 教師ありニューラルネットワークを用いた次世界画像の分類 | |
リカレントニューラルネットワーク | ニューラルネットワークを使用して観測に一致するパターンを生成 | |
シーエンス変換(Seq2seq)モデル | 自然言語の問い合わせに対する自然言語応答の予測 | |
順位付け | 効用の学習によって項目を順位付けするための学習 |
TensorFlow
- Googleが公開した機械学習フレームワーク
- 便利なPython APIと比較すると劣るがC++ APIを備える
- すべての数学は抽象化される
- TensorBoardというインタラクティブな可視化環境
- チュートリアル
インストール
Dockerを使用したインストール
$ docker pull tensorflow/tensorflow:latest # Download latest stable image $ docker run -it -p 8888:8888 tensorflow/tensorflow:latest-jupyter # Start Jupyter server
- Docker Desktopにイメージが登録された
- Jupyter notebookを起動
tokenを確認
---
- 一度終了したコンテナを再度起動
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 92ce0f7112eb tensorflow/tensorflow:latest-jupyter "bash -c 'source /et…" 25 hours ago Exited (0) 4 seconds ago sleepy_varahamihira $ docker start 92ce0f7112eb 92ce0f7112eb $ docker exec -it 92ce0f7112eb /bin/bash ________ _______________ ___ __/__________________________________ ____/__ /________ __ __ / _ _ \_ __ \_ ___/ __ \_ ___/_ /_ __ /_ __ \_ | /| / / _ / / __/ / / /(__ )/ /_/ / / _ __/ _ / / /_/ /_ |/ |/ / /_/ \___//_/ /_//____/ \____//_/ /_/ /_/ \____/____/|__/
- シェルからトークンを取得する
root@92ce0f7112eb:/tf# jupyter notebook list Currently running servers: http://0.0.0.0:8888/?token=dda07003bf50df42ccbd737ea09753318149a29a21b4ebe5 :: /tf
© 2006 矢木浩人