機械学習
MachineLearning
DeepLearning
人工知能
深層学習
More than 1 year has passed since last update.

深層学習いろいろ

ディープラーニングを勉強するにあたって集めた資料のまとめ。
まだまだ途中です。

深層学習フレームワーク

Comparison of deep learning software
Comparison of deep learning software/Resources
Software links << Deep Learning
Getting Started with Deep Learning
深層学習フレームワークヒッチハイクガイドVer2.0

以下のプラットフォームに記載しているのは最低動作バージョンなので、それ以降であれば動作可能。

WindowsとLinuxの両対応を謳うフレームワークが多い。
WindowsよりLinuxの方が悩むことが少ない。
CentOSよりUbuntuの方が手軽に使える。(yumリポジトリよりaptリポジトリの方が必要なものが揃っている。)
ただし、どの場合でもPythonのバージョンには注意。
Dockerイメージが用意されている場合もあるが、Dockerに詳しくないなら使わないほうが無難。

発展著しい分野なので、マイナーバージョンが異なるだけでもうまく動かないことが多い。
使いたいソフトウェアの最低ラインに合わせるしかない。
- フレームワークのバージョン
- Pythonのバージョン
- CUDA/cuDNNのバージョン
- VisualStudioのバージョン

TensorFlow

開発: Google Brain
公開: 2015.11.9
ライセンス: Apache-2.0
言語: Python 2.7, Python 3.3, Go, Java, C++, C
プラットフォーム: Windows 7, Ubuntu 14.04, MacOS X 10.11
内製フレームワークのDistBeliefで猫を認識させたGoogleが開発して人気が出た。
ユーザーが多く、WEB上の情報や書籍も豊富。
TensorBoardでログを可視化できるのが便利。
KerasやTFLearnなどを取り込み、開発が活発。

Chainer

開発: PFN(日本)
公開: 2015.6.9
ライセンス: MIT
言語: Python 2.7.6, Python 3.4.3
プラットフォーム: Ubuntu 14.04, CentOS 7, Windows(サポート対象外だが動作可能)
国産だがドキュメントは英語。
「Define by Run」が特徴で、バックプロパゲーションに必要な計算グラフを学習時に動的に生成できる。
ChainerではCUDAのライブラリはcuDNNではなくCuPy(NumPy互換)を使う。
自然言語処理や時系列処理が得意。

ChainerMN

Chainerを分散学習するための追加パッケージ。

Cognitive Toolkit(CNTK)

開発: Microsoft
公開: 2016.1.25
ライセンス: 独自?MIT?
言語: Python 2.7, Python 3.4, BrainScript, C#, C++, Java
プラットフォーム: Windows, Linux
もともと音声向け。
公式の.NET用ラッパーが容易されている。
並列計算の要、1-bit SGDは商用利用禁止。
BrainScriptで設定ファイルを用意するだけで学習を実行できる。
PythonのJupyter Notebookを使えば、ブラウザ上チュートリアルを実行できる。
TensorBoardでログを可視化できる。

Caffe2

開発: Facebook
公開: 2017.4.18
ライセンス: Apache-2.0
言語: Python 2.7, C++
プラットフォーム: Windows 10, Ubuntu 14.04, OS X
Caffeより計算が柔軟になり、モバイル搭載も考慮され、大規模にも耐えうる。
Caffeのモデルを変換して使用できる。
TorchのモデルはCaffeモデルを経由して変換できる。

Caffe: Convolutional Architecture for Fast Feature Embedding

開発: BVLC(カリフォルニア大学バークレー校)
公開: 2013.10
ライセンス: BSD 2-Clause
言語: Python 2.7, Python 3.3, C++, MATLAB
環境構築が大変。
低レベルAPIなのでコードを書くのも大変。
学習済みモデルが多数用意されている。
画像(CNN)および転移学習向け。

NVIDIA TensorRT

Caffeモデルを読み込んで使う推論エンジン。(学習には利用できない)
CUDAのカスタム実装を使っている。
AlexNet、VGG、GoogLeNet、ResNetなどのCNNでPF32をINT8で計算するので爆速。

PyCaffe

Pythonで使うためのライブラリ。

DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition

Caffeの元となった論文および実装。

PyTorch

開発: Facebook
公開: 2016.10
ライセンス: BSDライク
言語: Python, C++
NumPyのような計算用ライブラリ。
「Define by Run」が使える。

Torch7

開発: Facebook
公開: 2015.1
言語: Lua, C++
古くから開発されている機械学習ライブラリ。
Luaスクリプトが使える。

DyNet

開発: CMU(カーネギーメロン大学)
ライセンス: Apache-2.0
言語: Python, C++
「Define by Run」が使える。
自然言語処理に向いている。

Apache MXNet

開発: DMLC(Distributed Deep Machine Learning Community)
Apache: 2017.1.23
ライセンス: Apache-2.0
言語: Python, R, Scala, Julia, C++
AmazonがDSSTNEからMXNetに乗り換えて有名になった。
Kerasのバックエンドとしても利用可能。

Deeplearning4j(DL4J)

開発: Skymind
公開: 2014/2
ライセンス: Apache-2.0
言語: Java, Scala
Javaで深層学習を扱える。
日本語のドキュメントがある。
Kerasのバックエンドとしても利用可能。

H2O.ai

オンメモリでハイパフォーマンスなことが特徴。
CSVデータを用意するだけでDNNが使えるので分析系に向いている。
ブラウザからのインタフェースも充実している。

Mocha.jl

Juliaで深層学習を扱えるライブラリ。

deeplearn.js

JavaScriptで深層学習を扱えるライブラリ。
WebGLを介して、ブラウザ上でもGPUを扱える。

PaddlePaddle: PArallel Distributed Deep LEarning

開発: Baidu(中国)
公開: 2016.9
ライセンス: Apache-2.0
言語: Python 2.7
プラットフォーム: Ubuntu 16.04, CentOS 7, MacOS 10.12
ドキュメントは中国語と英語。

NNabla: Neural Network Libraries

開発: SONY
公開: 2017.6
ライセンス: Apache-2.0
言語: Python, C++
プラットフォーム: Windows, Linux
ドキュメントは英語。

Neural Network Console

IDE(Neural Network Console)でドラッグ&ドロップな開発ができる。

Darknet

開発: Joseph Redmon
公開: 2015.7.11
ライセンス: Public Domain
言語: C
YOLOの作者自身によるDNNフレームワーク。
リアルタイム物体検出のYOLOが簡単に使える。
黒魔術っぽい魔法陣が印象的。

Theano(テアノ)

開発: モントリオール大学
終了: 2017.9
Python用の数値計算ライブラリ。
ディープラーニングが流行りだした頃一番ドキュメントが充実しており人気があった。

Pylearn2

終了: 2016.3
Theanoベース。

DSSTNE(ディスティニー): Deep Scalable Sparse Tensor Network Engine

開発: Amazon
公開: 2016.5
ライセンス: Apache-2.0
正式なアナウンスはないが、AmazonがMXNetに乗り換えて開発停止となった。

TensorFlow

Keras

開発: Project ONEIROS
公開: 2015.3.27
ライセンス: MIT
言語: Python 2.7, Python 3.5
日本語ドキュメント公開: 2016.6
様々な深層学習エンジンを使用できるラッパーフレームワーク。
公式ではバックエンドにTensorFlow, CNTK, Theanoをサポートしている。

日本語のドキュメントが充実している。
Kerasの簡単なAPIから教師あり学習を行うことができる。
普通にCNN・RNN・LTSMを使う分にはKerasで問題ない。
最新のアルゴリズムを試したい場合は、バックエンドのフレームワークで直接構築する。

TensorFlowに取り込まれ、tf.contrib.keras(そのうちtf.keras)で使用できる。
tf.contribパッケージはは実験的で初期プレビュー的なもので変化する可能性がある。
バックエンド用として本体の開発も続けられている。

Sonnet

開発: DeepMind(Googleの子会社)
公開: 2017.4.7
ライセンス: Apache-2.0
言語: Python 2.7, Python 3.4
TensorFlowのラッパー。
Kerasの方が簡単だが、SonnetはTensorFlowに最適化されている。

TFLearn / skflow

公開: 2016.5.31
ライセンス: MIT
言語: Python
TensorFlowのラッパー。
TensorFlowをscikit-learnと同じように使えるので人気だった。
TFLearnがTensorFlow本体に取り込まれ、tf.contrib.learnとなった。
tf.contrib.learn.Estimatorがtf.estimatorとなり、コアパッケージに昇格した。

TFLearn本体の開発も続けられている。

Tensor2Tensor(T2T)

公開: 2017.6.19
TensorFlow用の学習のためのライブラリ。
モデルの構築手順をモジュール化しておくことで、データの入れ替えや計算手順の変更などが容易になる。
学習用のデータセット、よく利用されるモデルとハイパーパラメータのセットなどが用意されている。
汎用化されたSeq2Seqモデルを使用できる。
※Seq2Seq=入力も出力もシーケンシャルな時系列データを処理するモデル

TensorFlow Fold

TensorFlowで「Define by Run」が使えるようになる追加パッケージ。

TensorFlow Lite

スマホ向けの軽量ライブラリ。
TensorFlowの一部として提供される。

Edward

確率的プログラミング用のPythonライブラリ。
TensorFlowを使用している。

TensorBoard

TensorBoardとは、TensorFlowに同梱されているログを可視化するツール。
ログのフォーマットさえ同じであれば他のDNNフレームワーク(CNTKなど)からも利用可能。
学習成果を確認するためには必須。

Embedding Projector(旧Embedded Visualization)

TensorBoardに組み込まれている3軸空間をグリグリ動かせるアレ。
テキストや画像も表示できるので、何が間違っているか視覚的に確認できる。

Facets

機械学習用のデータ可視化ツール。
TypeScriptとPolymerで実装されている。
拡張を使えばJupyter Notebook上で表示できる。
同様のツールにMicrosoft SandDanceが挙げられる。

NVIDIA DIGITS: the Deep Learning GPU Training System

GUIで学習できるWEBインタフェース。
TensorFlow, Torch, Caffeが使用できる。
CNNの構造としてLeNet、AlexNet、GoogLeNetなどが使用できる。

CNTK

ONNX: Open Neural Network Exchange

開発: Facebook, Microsoft
公開: 2017.9.7
ライセンス: MIT
言語: C++, Python
ディープラーニング用の学習モデル相互変換フレームワーク。
Caffe2、PyTorch、CNTK間で学習モデルを相互に変換できる。

Gluon

開発: AWS, Microsoft
公開: 2017.10.12
ライセンス: Apache-2.0
MXNet, (CNTK予定), (Caffe2予定)をサポートしているフレームワーク。
現状ではMXNetに組み込まれているAPIを使用する。

機械学習フレームワーク

scikit-learn

開発: David Cournapeau
公開: 2007
ライセンス: BSD-3-Clause
言語: Python
Pythonの機械学習用ライブラリ。
名前が示すとおりsci kit=SciPy Toolkitとして開発された。
SVM、ランダムフォレスト、勾配ブースティング、k近傍法、DBSCANなどが使える。

XGBoost: eXtreme Gradient Boosting

開発: DMLC(Distributed Deep Machine Learning Community)
公開: 2014.3.27
ライセンス: Apache-2.0
言語: Python, R, Java, Scala, Julia, C++
勾配ブースティングの機械学習ライブラリ。
Kaggleの優勝チームが使用して有名になった。

CatBoost

開発: Yandex(ロシア)
公開: 2017.7.18
ライセンス: Apache-2.0
言語: Python, R
ロシアのGoogleと言われるYandexが公開した勾配ブースティングの機械学習ライブラリ。
MatrixNetの後継。

Intel DAAL: Data Analytics Acceleration Library

開発: 01.org(Intel's Open Source Community)
公開: 2015.8.25
ライセンス: Apache-2.0
言語: C++, Java
データマイニング、マシンラーニング用のライブラリ。

Apache PredictionIO

開発: salesforce.com
公開: 2016.10.7(Apache)
ライセンス: Apache-2.0
言語: Python, Java, Ruby, PHP
Apache SparkおよびMLibを使用するフルスタック機械学習プラットフォーム。
学習エンジンはD-A-S-Eコンポーネントなので、独自実装は大変。
予測/レコメンドのテンプレートならすぐ使える。
PredictionIO社が2013年から開発していたが、2016年にセールスフォースが買収した。

Apache Hivemall

開発: トレジャーデータ(日本)
公開: 2016.9(Apache)
ライセンス: Apache-2.0
言語: SQL
Hiveのユーザー定義関数として実装された機械学習ライブラリ。
HiveはHadoop/Spark用のDWH(Data Warehouse)エンジン。

Jubatus(ユバタス)

開発: PFN, NTT
公開: 2011.10
ライセンス: LGPL v2.1
言語: Python, Scala
オンライン機械学習向け分散処理フレームワーク。
日本発なので、日本語の情報が豊富。

数値解析ソフトウェア

各種ライブラリと組み合わせることで機械学習できる。

Python

NumPy、SciPy、Matplotlibを組み合わせればMATLABの代替となる。

Julia

科学計算に強いプログラミング言語。

R

統計解析向けのプログラミング言語。

SageMath

Pythonで使用できる数理処理システム。
Magma、Maple、Mathematica、MATLABの代替となるものを目指して開発された。
ゼロから作るよりも、すでにあるモノを組み合わせて利用するインタフェースとして作成された。

GNU Octave

MATLABの代替として作られた。
MATLABとの互換性を重視している。
Courseraの機械学習コースでも使用されていた。

Mathematica

数式処理システム。
大学でよく使用されていた。
まだまだ高額。

MATLAB

数値解析ソフトウェア。
大学でよく使用されていた。
ビジネス向けは高額だったが、Homeユース向けはだいぶ安くなってきた。

Python

Python

スクリプト言語の一種。
パッケージ管理にpipというコマンドが利用できる。
ディープラーニングでよく使われるようになった。

Python2, Python3

Python2.xとPython3.xではprint文など一部互換性がなくなっている。
そのため、切り替えが進まず問題となっている。
futureやSixといったパッケージを利用することで互換性を保つことができる。

Anaconda, Miniconda

AnacondaはPythonをインストールするためのディストリビューション。
Anacondaを使うと2.x系と3.x系を簡単に切り替えられる。
NumPyやMatplotlibといったライブラリも同時にインストールされる。
WindowsではSciPyが上手くインストールできないのでAnacondaを使用するとよい。
Minicondaは自分でインストールするライブラリを決められる。

Jupyter Notebook

Julia + Python + R = Jupyter
もともとはIPython Notebookと呼ばれていた。
コードを含んだWEBページを作成、閲覧できる。
拡張子は*.ipynbで、JSON形式で保存される。
コードはブラウザ上で実行することも可能。
CNTKのチュートリアルで利用されている。

PyPi: Python Package Index

Pythonのサードパーティ・ソフトウェアのリポジトリ。
ここで公開されているパッケージはpipでインストールできる。

TensorFlow, Keras, Chainer, scikit-learn, etc...

各種ディープラーニング向けライブラリ。
pipで簡単に導入することができる。

NumPy

行列・ベクトル計算用ライブラリ。

SciPy

高度な科学計算用ライブラリ。
NumPyを基盤にしている。

Pandas

データ解析用ライブラリ。

Matplotlib

MATLABライクなグラフ描画用ライブラリ。
NumPyを基盤にしている。

Bokeh

D3.jsを利用してインタラクティブなグラフを描画できるライブラリ。
Jupyter Notebook上でも利用できる。

Plotly.py

Bokeh同様インタラクティブなグラフを描画できるライブラリ。

future

Python2でPython3の機能を使うためのライブラリ。

Six

Python2とPython3の違いを吸収するためのライブラリ。
2 * 3 = 6 が名前の由来。

tqdm, colorama

tqdm: コンソールにプログレスバーを表示できる。
colorama: コンソールに色付けできる。

Requests, lxml, selenium

Requests: HTTPリクエストを簡単に扱える。
lxml: XMLやHTMLをパースできる。
selenium: ブラウザを操作できる。

Scrapy

スプレイピングできる。

PyOCR

文字認識ツールのラッパー。
Tesseract-OCR(Google)またはCuneiForm(ロシア)を使用できる。

Joblib

永続化、キャッシング、並列化を行えるライブラリ。
pickleより便利。

py2exe, PyInstaller

Pythonスクリプトを実行形式に変換できる。
必要なランタイムやライブラリも含まれるので単体で実行可能。

Django, Jinja

動的なWEBページを作成する際に使用する。
Django: WEBアプリケーションフレームワーク
Jinja: HTMLやLaTeXに変数を埋め込めるテンプレートエンジン

mpi4py(MPI for Python)

MPI標準のPythonバインディング。
Intel MIP Libraryも使える。

音声認識ツールキット

List of speech recognition software

音声認識の場合はマイクの性能がけっこう重要なので、コンデンサーマイクを使うのがよい。
安いマイクだとホワイトノイズが入ったり増幅が小さい。

Kaldi

NNを使える音声認識ツールキット。
KaldiのバックエンドにTensorFlowが使えるようになった。
日本語のサンプルもあるが、有料のCSJを使うため大学の研究用。

Julius(ジュリアス)

昔からある日本語を扱うための音声認識ツールキット。
Julius-4.4より音響モデルでDNN-HMMを使用可能。
言語モデルはNNを未サポート。
認識率はともかく、日本語音声認識を使うだけなら簡単。
モジュールモードで動かせばTCP/IPで通信できる。

Speech Segmentation Toolkit using Julius

HTK(Hidden Maldov Model Toolkit)

HTK 3.5より言語モデルでRNNを使用可能。
HTKの音響モデルは他のフレームワークでも採用している。

CMU Sphinx

日本語の情報は少なめだが、有名。
ディープラーニングは未対応。

System.Speach, Microsoft.Speach

.NETから利用できる音声認識API。
自由発話(ディクテーション)はともかく、登録ワードの認識率はなかなか。
動作原理は不明だが昔から有るのでディープラーニングではなさそう。

音声コーパス

音声認識に用いるコーパス データ量、質で分類してみた

声優統計コーパス

貴重な音声コーパスがクリエイティブ・コモンズ・ライセンス(CC-BY-SA)で公開されている。

話速バリエーション型音声データベース(SRV-DB)

研究目的、公序良俗に違反しない利用が許可されている。

日本語話し言葉コーパス(CSJ)

学生は25,000円、商用利用は500,000円。
Juliusの音響モデル構築に使用されている。

ATR音声データベース

非常に高価。
音素バランス文が有名。
Juliusの音響モデル構築に使用されている。

国立情報学研究所 音声資源コンソーシアム

多数の音声コーパスが利用できる。
個人、企業、大学での研究目的でのみ許可されている。
申し込みのフォーマットは大学を前提としているが、個人などでも申し込める。
利用には書類の送付が必要。

大学や公的研究機関等における研究行為(企業における基礎研究も含む)で、
製品や営利行為に直接にはつながらないもの.

1) 企業の研究所等における、直接には製品や営利につながらない行為で、
例えば、原理方式の開発、ツールの開発等に利用できる.
2) 製品開発において、性能を評価するための
試験データとして利用することは可.
3) 販売を目的とした製品への搭載、直接営利につながる方式・
試作品・ツールの開発のために利用することはできない.

その他

自分で音声コーパスを作成する場合は、下記が考えられる。
利用する際には、利用条件、ライセンス、著作権に注意すること。

  • 既存の音声認識・合成音声から生成
  • 青空文庫・朗読
  • 映画・字幕
  • アニメ・字幕
  • 音楽・歌詞
  • ノベルゲームの音声とテキスト
  • YouTube
  • テレビ
  • ラジオ
  • ボイスレコーダー
  • IP電話(PBXまたは録音)

自然言語処理

JUMAN, JUMAN++

古くからある日本語形態素解析システム。
JUMAN++は言語モデルとしてRNNLMを使用。
開発が継続されている。

JUMAN++をPythonから使う

Janome(蛇の目)

Pythonでの形態素解析ライブラリ。

MeCab(和布蕪)

形態素解析エンジン。
ChaSenを元に開発され、後にフルスクラッチで開発された。
Googleが公開した大規模日本語N-gramデータの作成にも使用された。
開発停止。

ChaSen(茶筅)

JUMANを元にした形態素解析ツール。
処理が早かったので一時期は非常に人気があった。
開発停止。

KNP

日本語の構文解析ツール。
JUMANの出力をそのままKNPに渡す。
JUMAN/KNPと書かれることが多い。

CaboCha(南瓜)

日本語係り受け解析(構文解析)ツール。
SVMのアルゴリズムを利用している。

SRILM(The SRI Language Modeling Toolkit)

N-gram言語モデルの作成ツール。
研究用は無料、商用は有料。

palmkit(Publicly Available Language Modelling Toolkit)

N-gram言語モデルの作成ツール。
コマンドレベルでCMU-Cambridgeと互換性がある。
開発停止。

CMU Cambridge SLM toolkit

N-gram言語モデルの作成ツール。
開発停止。

gensim

Pythonでのトピックモデル作成ライブラリ。
word2vecで単語をベクトル化する手法。

  • TF-IDF: 文書群から特徴語を抽出する。
  • LSI: 文書間距離や単語間距離を計算する際に、次元圧縮する。
  • LDA: 文書をトピックという抽象概念の構成比で数値化する。

並列コンピューティング

GPGPU

CUDAとOpenCLどっちがいいの?

CUDA, cuDNN

CUDAはNVIDIAのGPGPUプラットフォーム。
cuDNNはCUDAを使ったDNN用ライブラリ。
バージョンにより必要とするVisualStudio(C++コンパイラ)のバージョンが異なるので注意。

CUDA Installation Guide for Microsoft Windows

OpenCL

異種プロセッサを使うためのプラットフォーム。
もちろんNVIDIAのGPUも使える。
AMDのGPUも使える。
FPGAも使える。

Microsoft DirectCompute

WindowsのDirect3D系で使用できるGPGPUのAPI。
HLSLで記述する必要がある。
ディープラーニングで使用されているのは見たことがない。

マルチGPU

NVIDIA SLI

SLIブリッジによってGPUボード同士を接続する方式。
AMD CrossFireも同様の技術。

NVLink, NCCL

NVLinkはNVIDIAの高速バス通信規格。
スロットはPCIeとは異なるので専用マザーボードが必要。
NCCLはNVLinkを使用するためのライブラリ。
NVlinkとNCCLでNVIDIAの複数GPUを高速で動かせる。
CUDA含め、対応バージョンに注意。

並列コンピューティング(クラスタ/HPC)

OpenMP

並列コンピューティング用のプラットフォーム。
共通メモリ領域で、スレッド並列。
pragmaを書くだけで使えるらしい。

MPI

プロセス並列。
使うのが大変。
OpenMPI、MPICH、MS-MPI、Intel MPI Libraryなど多数の実装が存在する。

分散コンピューティング(グリッド)

Apache Spark

インメモリ分散処理フレームワーク。
MLibを使って機械学習ができる。
Scalaで書かれている。
Pythonから使う場合はPySpark。

Apache Hadoop

GoogleのMapReduceおよびGFS(Google File System)のオープンソース実装。
Hadoopはディープラーニングには向いていない。
Javaから利用できる。

GPUクラウド

グーグルもGPUクラウドに参入、4社のコスパ比較

FloydHub

先に枠を購入して試せるので安心。
pipで簡単に使えるのもよい。

GPUでディープラーニングやるならAWSよりFloydHub

SAKURA Internet 高火力コンピューティング

割高だが、高価な設備を導入する前に、どれくらい効果があるのか試すのに向いている。
Quad GPU(Titan X)で 317円/h なので 7,608円/d となり、カタログスペック上はそれなりにコスパがよい。
ただし、Titan XではNVLinkが使えないので注意。

ハードウェア

GPU

NVIDIA GeForce GTX1080tiが高価だがコスパがよい。
TitanはGeForeceシリーズの最高峰の位置づけ。
Teslaは公式にGPGPU対応を謳ってNVLink対応なので高額。
Tesla P100はすべてが高性能、P40やP4は運用(推論)に最適化されている。
AMDはオススメできない。

最高性能を求めるならNVLink用マザーボードにNVLink版Teslaが必要。
NVIDIA DGX-1 with TESLA V100(Volta)で1,699万円。

GTX1080TIとTESLA P100をCAFFEで比較してみた

Intel Movidius Neural Compute Stick

ハードウェア上にNNイメージをロードして高速応答を実現する模様。
MovidiusはIntelに買収された。
Ubuntuのみ対応。

Intelが激安1万円以下のUSB型ディープラーニング用端末「Movidius Neural Compute Stick」を発売
Raspberrypi3でMovidius Neural Compute Stickのサンプルまでを動かしてみた

Microsoft Project BrainWave

Intel Stratix 10 FPGAを使用。
TensorflowやCNTKをサポート。

Google Cloud TPU

TensorFlow Research Cloud

コンデンサマイク、ミキサー

  • SONY ECM-PC60
  • Sennheiser PC 131
  • SAMSON Go Mic
  • Blue Microphones Yeti
  • Rode NT1A + YAMAHA AG03

Microsoft Kinect

  • Kinect for Xbox 360(2010.11)
  • Kinect for Windows(2012.2)
  • Kinect for Windows v2(2014.7)
  • Kinect for Xbox One(2014.9) + Adapter

2017.10に生産中止が宣言される。
代替にWindowsMRのヘッドセットが使えるかどうか。

Visual StudioとKinect SDKで開発。
Kinect Studioを使うと、Kinectデータの記録と再生ができて開発が捗る。

以下v2のスペック

最低動作環境
USB3.0
Intel Core i7 3.1GHz, RAM 4.0GB
VS2012, DirectX 11.0

カラーカメラ
解像度 1920 * 1080(1080p, Full-HD, 16:9, 2K, 2.1MP)
FPS 30(暗いと自動制御で15)

深度カメラ
解像度 512 * 424
FPS 30
距離 0.5 - 8.0m

認識範囲
人物認識 同時6人
骨格認識 同時6人 25関節/人
認識距離 0.5 - 4.5m
水平角度 70度
垂直角度 60度

カメラ向き(チルトモーター制御)

ジェスチャーコントロール(手の開閉)
フェイストラッキング(目口の開閉、表情)
音声認識(内容、位置、話者)
筋肉、力、指の動き、皮膚の状態、心拍数

Tobii Eye Tracker 4C

アイトラッキングができる。

用語

人工知能(AI: Artificial Intelligence)

人工的にコンピュータ上で人間と同等の知能を実現するための技術。

機械学習(ML: Machine Learning)

人間が自然に行っている学習をコンピュータで再現するための技術。
人工知能研究の一分野。

ニューラルネットワーク(NN: Neural Network)

脳神経のニューロンの特性を模した人工の回路網。
生物学などと区別するために人工ニューラルネットワーク(ANN: Artificial NN)とも呼ばれる。
ANNはグラフ構造で表せるので、ニューロンをノード、軸索をエッジと呼ぶ。

一般的に多層パーセプトロンのことを指す。

グラフ構造

グラフ理論におけるデータ構造。
ノード(頂点)郡とそれを結ぶエッジ(枝)からなる。

形式ニューロン

入力の多数決と閾値で出力を決める神経モデル。
ステップ関数そのもので表される。
パーセプトロンの元になった仕組み。

人工ニューロン

NNを構成する基本単位。
単純パーセプトロンやシグモイド・ニューロンのこと。

パーセプトロン

形式ニューロン(ステップ関数)の入力に重みとバイアスを考慮したものがパーセプトロン。
線形分離可能な問題を解ける。
OR, AND, NANDが実現できて、XORは実現できない例としてよく使われている。

単純パーセプトロンとも呼ばれる。

シグモイド・ニューロン

単純パーセプトロンのステップ関数の代わりにシグモイド関数(ロジスティック関数)が使われたモデル。

ロジスティック・ニューロンとも呼ばれる。
ロジスティック回帰モデルやロジスティック回帰とも。
単純パーセプトロンと区別せずにパーセプトロンと呼ぶこともある。

多層パーセプトロン(MLP: Multi Layer Perceptron)

入力層・隠れ層・出力層の三層以上からなるパーセプトロン。
隠れ層は中間層とも呼ばれる。

線形不可分な問題を解ける。
任意の活性化関数を利用できる。
学習のためバックプロパゲーションが使われた。

三層からなるMLPをパーセプトロンと呼んで四層以上のMLPと区別することもある。

SVM: Support Vector Machine

多層パーセプトロンが計算量的に難しかった頃に出現したモデル。
線形分離できる場合は、サンプル数が少なくても精度が高い。

ボルツマンマシン

制約付きボルツマンマシン(DBM)

深層学習(DL: Deep Learning)

ディープニューラルネットワークによる機械学習の手法のひとつ。
ビッグデータを使用する教師なし学習に向いている。

DNN: Deep Neural Network

多層のニューラルネットワークを指す。
階層が深いことを指してDeepと呼ぶ。

  • CNN: Convolutional Neural Network
  • RNN: Recurent Neural Network
  • LSTM: Long Short-Term Memory
  • GRU: Grated Recurrent Unit
  • BiRNN: Bidirectional RNN
  • RNN Encoder-Decoder
  • Attention
  • MemN: Memory Networks
  • R-CNN: Regions with CNN features
  • RWA: Recurrent Weighted Average
  • QRNN: Quasi-Recurrent Neural Network

FFNN: Feed-Forward Neural Network

パーセプトロンのような一方向へ信号が伝播するNNのこと。
意味としてはRNNの対比として使われる。

多層パーセプトロンのことを指すこともある。
昔は2~3層のパーセプトロンといえば全結合層だったので、全結合のMLPを指してFFNNということもある。

CNN: Convolution Neural Network

畳み込み層とプーリング層を組み込んだモデル。
特徴量を検出する畳み込み層とレイヤーの縮小を行うプーリング層がセットで使われる。
畳み込みは画像処理でよく使われている手法で、関数を移動しながら適用していく。
例えば、あるビットと周りの差分を取る畳み込み処理(フィルタリング)を行うと輪郭を検出できる。
画像処理に向いている。

Convolutional Neural Networkとは何なのか
定番のConvolutional Neural Networkをゼロから理解する
自然言語処理における畳み込みニューラルネットワークを理解する

RNN: Recurrent Neural Network

ひとつ前の要素の隠れ層の出力を、次の要素の隠れ層の入力として使用するモデル。
自然言語や音声などの連続する要素を扱うのに向いている。

再帰的なNN全般を指すこともある。

RNN:時系列データを扱うRecurrent Neural Networksとは
シンプルなRNNで文字レベルの言語モデルをTensorFlowで実装してみる

LSTM: Long Short-Term Memory

内部にループを持ち情報を持続させることができるRNNモデル。

LSTMネットワークの概要

GRU: Gated Recurrent Unit

LSTMが複雑すぎるので、単純化したもの。

自己符号化器(Autoencoder)

次元を削減するために使われていた。
今ではAutoencoderを使用しなくても十分な精度が出るため、使われなくなった技術。

オートエンコーダ:抽象的な特徴を自己学習するディープラーニングの人気者

計算グラフ

トイ・プロブレム(Toy Problem, Puzzlelike Problem)

実験で使う簡単な問題。
決まった制約の中での問題。
対義語はreal-world problem。

インファレンス

学習済みモデルの実行。
推論。

尤度

もっともらしさ。

汎化

訓練データだけでなく、未知のデータに対しての予測精度が上がるように分類すること。

学習率(Learning Rate)

モデルのパラメータの収束のしやすさ。
ハイパーパラメータのひとつ。

たいていデフォルトでよい。
学習が遅い場合は、学習率を上げる。
誤差が発散する場合は、誤差が飽和しない程度に学習率を下げる。

シンプルなNNで 学習失敗時の挙動と Batch Normalization の効果を見る

エポック(Epoch)

データ全体の反復学習回数のこと。
ハイパーパラメータのひとつ。

ハイパーパラメータ

ディープラーニングで予め決めて置かなければいけない値のこと。
重みの初期値、活性化関数、エポック数、学習率、ミニバッチサイズ、ドロップアウト率、レイヤー数、ノード数など。
学習により自動調整される重みやバイアスは含まれない。

ハイパーパラメータ自動調整いろいろ
ニューラルネッワークのハイパーパラメータ最適化方法について Part1〜学習率〜

機械学習アルゴリズム

  • 教師あり学習
  • 教師なし学習
  • 半教師あり学習
  • トランスダクション(トランスダクティブ推論)
  • 強化学習
  • マルチタスク学習

機械学習モデル

  • 決定木学習
  • 相関ルール学習
  • サポートベクタマシン(SVM)
  • ニューラルネットワーク(NN)
  • 遺伝的プログラミング(GA)
  • 帰納論理プログラミング(ILP)
  • クラスタリング(k近傍法)
  • ベイジアンネットワーク

代表的な機械学習手法一覧

クラス分類とクラスタリング

クラス分類(Classification)は、有限個のラベルに対して振り分けを行うこと。
クラス分類は教師あり学習で使用される。

クラスタリング(Clustering)は、似た集団に振り分けること。
クラスタリングは教師なし学習で使用される。

活性化関数、伝達関数

NNにおいて、ひとつのノードの入力と出力の関係を表す式。
入力値が閾値を超えるとニューロンが発火し、出力される。

  • ステップ関数
  • シグモイド関数(ロジスティック関数)
  • ソフトマックス関数
  • ReLU(ランプ関数)

活性化関数のまとめ(ステップ、シグモイド、ReLU、ソフトマックス、恒等関数)

誤差逆伝播法、バックプロパゲーション(Backpropagation)

MLPにおいて出力値の誤差によって重みとバイアスを自動調整していく学習手法。

重みを更新するタイミングは以下の3つの手法がある。
バッチ学習: 全データを一括で重み付けを行う。メモリ消費が激しい。
オンライン学習: 個々の伝播(propagation)で逐次更新を行っていく。
ミニバッチ学習: 小さな範囲に区切ってバッチ学習を行い更新を行っていく方式。

誤差逆伝播法を宇宙一わかりやすく解説してみる

損失関数(Loss Function)、費用関数(Cost Function)

NNにおける出力値がどれだけ正解から離れているかを表す関数。
バックプロパゲーションで使用する。

SGD

勾配法

勾配消失

バックプロパゲーションの勾配がうまく計算できなくなる問題。

オーバーフィッティング、過学習

訓練データに適応しすぎて、うまく判定できなくなる問題。
対策として、データ量を増やす、正規化する、ドロップアウトを行うなどが考えられる。

ドロップアウト

オーバーフィッティングを防ぐ手法のひとつ。
学習の際にランダムでニューロンをドロップアウト(除外)する。

データの拡充

データを少しずらしたものを加え、訓練データを水増しする。
画像なら回転や拡大縮小、フィルタなど、音声なら早送り、スロー再生など。

正則化

バッチ正規化

アンサンブル学習

モデルの不完全性を前提として複数のモデルの結果を結合する。

転移学習、ファインチューニング(Fine-Tuning)

ある領域で学習させたモデルを別の領域に適用する方法。

蒸留(Distillation)

教師モデル(既存の学習済みモデル)を使用して、生徒モデル(新たな学習モデル)を生成する方法。
生徒モデルは教師モデルより小さく早いが精度は同等となる。

評価

正解率、適合率、再現率。
偽陽性、真陽性、偽陰性、真陰性。

GAN: Generative Adversarial Network

生成と評価を競わせて双方の精度を向上させる手法。

はじめてのGAN

強いAIと弱いAI

自意識を持つ何でもこなせる汎用型のAIを強いAIという。
この強いAIが本当の意味での人工知能といえる。
ごく限られた領域の問題を解ける特化型のAIを弱いAIという。

技術的特異点、シンギュラリティ(Singularity)

ムーアの法則に沿って技術が発展していった場合、2045年に人工知能が人間の能力を超えると言われている。
AIが自分よりも賢いAIを開発できるようになれば、爆発的に自己進化を遂げる。

ムーアの法則

コンピュータチップの性能は、18ヶ月で2倍になる。

コーパス

テキストや発話を大規模に集めてデータベース化した言語資料。

音響モデル

ガウス混合モデル(GMM: Gaussian Mixture Model)

複数の正規分布によってクラスタリングを行う手法。

隠れマルコフモデル(HMM: Hidden Markov Model)

メル周波数ケプストラム係数(MFCC: Mel-Frequency Cepstram Coefficients)

音楽と機械学習 前処理編 MFCC ~ メル周波数ケプストラム係数

メル周波数ケプストラム(MFC: Mel-Frequency Cepstram)

特徴抽出で使われる手法。

メル尺度(Mel scale)

高音域(周波数)の尺度。

ケプストラム(Cepstrum)

スペクトル(Spec-trum)のアナグラム。
音のスペクトルをフーリエ変換したもの。
スペクトルのスペクトル。

音声データを以下の2つにわけることをケプストラム分析と呼ぶ。
声帯振動: 細かな変化(高周波成分)
声道情報: 緩やかな変化(低周波成分)

スペクトル(Spectrum)

スペクトルの元はフランス語(Spectre)。
英語ではスペクトラム(Spectrum)だが、スペクトルと訳すことが多い。
物理現象の連続データを離散フーリエ変換したもの。
色の波長毎の強度分布(パワースペクトル)。
色の波長から転じて、音や電波の波長分布のことも指すようになった。

周波数スペクトルとも。
フーリエ変換することをスペクトル解析と呼ぶ。

スペクトログラム(Spectrogram)

周波数スペクトルを時間、周波数、信号の強さでグラフ化したもの。
一般的には、横軸が時間、縦軸が周波数、色や明るさ振幅(強度)を表す。

声紋と呼ぶこともある。

言語モデル

有限状態文法(FSG)

N-gram

辞書がなくてもよい。

話者クラスタリング

複数話者を区別する方法。

音素セグメンテーション

音声データを音素単位にラベリングする処理。

超解像(Super-resolution)

解像度の低いデジタル画像から高解像度の画像を生成する技術の総称である。

特徴点、特徴量

特徴量検出アルゴリズム

画像処理の数式を見て石になった時のための、金の針
特徴点を用いた物体認識
CNNを用いた物体検出アルゴリズムの性能比較

数式

ディープラーニングを使ってみるだけなら数式はわからなくてもよい。
新しいアルゴリズムを実装したり、精度をあげようとすると必須。
多くの資料で数式が登場するので、理解の一助となる。

線形と非線形

線形関数とは、厳密には原点を通る直線の式(y=ax)を指す。
ただし、直線を指して線形と言ったり、一次関数を指して線形という場合もある。
非線形関数は線形関数以外のすべて。

関数fが線形であるのは以下を満たす場合となる。

加法性: f(x + y) = f(x) + f(y)
斉次性: f(a * x) = a * f(x)

線形分類器(Linear Classifier)

単純パーセプトロンやロジスティック回帰など、線形分離可能なモデルのこと。

テンソル

ブロードキャスト

勾配降下法(Gradient Descent)

確率的勾配降下法(SGD: Stochastic Gradient Descent)

ミニバッチ降下法(Mini-batch Gradient Descent)

シグモイド関数

ロジスティック関数

変形すればシグモイド関数と同じ。

ソフトマックス関数

シグモイド関数の多変量版。

tanh

ReLU

LReLU: Leaky ReLU

PReLU: Parametric ReLU

RReLU: Randomized ReLU

ELU: Exponential Linear Units

離散フーリエ変換(DFT: Discrete Fourier Transform)

デジタル信号の解析に使われるフーリエ変換。
計算機上ではFFTで計算することができる。

フーリエ変換

複雑な周期関数を正弦関数(sin)や余弦関数(cos)の和で表現できる。
無限に続くを連続値を、無限の周波数までのsin波とcos波の重ねあわせとして表現できる。

離散化

音などの連続した物理量を一定の量や間隔で区切って非連続な値にすること。
アナログ信号をデジタル信号に変換すること。
符号化(Encode)やA/D変換の数学的な呼び方。

標本化(Sampling): 時間で区切ること。(Hz, ms)
量子化(Quantization): 振れ幅で区切ること。(bit)

高速フーリエ変換(FFT: Fast Fourier Transform)

離散フーリエ変換を計算機上で高速に計算するアルゴリズム。
サンプリング精度と計測時間のトレードオフがある。

画像処理

TODO: 各種フィルタ

画像の階層構造

意味・感性レベル: 画像の意味、印象
シーンレベル: 画像全体の構成
領域レベル: つながっている領域
トークンレベル: 領域の最小構成
画素レベル: 最小単位

ヒストグラム

エッジ検出

セグメンテーション

機械学習APIサービス

Amazon、Google、IBM、Microsoftが公開する、AIを使うための「API」「ライブラリ」「実行環境」一覧

IBM Watson Developer Cloud

ライト・プランは無料でクレジットカード登録なし、1ヶ月有効な$200のクーポンあり。
※ライト・プランで使用可能なものは限られる。

会話系
- Conversation(対話) ※ライト

言語系
- Language Translator ※ライト
- Personality Insights(性格分析) ※ライト
- Tone Analyzer(日本語未対応) ※ライト
- Natural Language Classifier(仕分け)
- Retrieve and Rank

画像系
- Visual Recognition

音声系
- Speech to Text
- Text to Speech

知識系
- Discovery(検索) ※ライト
- Natural Language Understanding(自然言語解析) ※ライト
- Document Conversion
- Discovery News(日本語未対応)
- Knowledge Studio

Google Cloud API - Machine Learning Services

Google Cloud Platformに登録するのにクレジットカードが必要。
12ヶ月有効な$300のクーポンあり。
各APIで最初の1000個/月までは無料枠がある。
問い合わせ回数ではなくラベル単位でカウントされる。

  • Cloud Natural Language API
  • Cloud Speech API
  • Cloud Translation API
  • Cloud Vision API
  • Cloud Video Intelligence API
  • Cloud Jobs API

Microsoft AI Platform - Cognitive Services

クラウドサービスではデータセンターの位置をリージョンと呼ぶ。
選択するリージョンによって利用可能なサービスが変わってくる。
無料枠は各API毎に異なり、無料枠がないサービスもある。

視覚
- Computer Vision API(分析、OCR、静止画サムネイル、日本非対応)
- Video API(ブレ補正、顔追跡、モーション検出、サムネイル、日本非対応)
- Video Indexer(内容洞察)
- Face API(検証、検出、識別、似た人検索、日本非対応)
- Emotion API(感情、日本非対応)
- Content Moderator(適切かどうか、日本非対応)

音声
- Speaker Recognition API(日本非対応)
- Bing Speech API
- Translator Speech API

Microsoftの音声認識技術を本気で検証してみた

言語
- Bing Spell Check API
- Text Analytics API(言語判定、キーフレーズ抽出、肯定/否定度、日本非対応)
- Translator Text API
- Web Language Model API(英文わかち書き、日本非対応)
- Linguistic Analysis API(自然言語構造解析)
- Language Understanding Intelligent Service(形態素解析、日本非対応)

検索
- Bing Autosuggest API(もしかして)
- Bing Web Search API
- Bing Image Search API
- Bing Video Search API
- Bing News Search API
- Bing Entity Search API(固有名詞検索)

知識
- QnA Maker API(Q&A作成)
- Recommendations API(オススメ商品、日本非対応)
- Knowledge Exploration Service(自然言語対話型検索)
- Entity Linking Intelligence Service API(固有名詞判定)
- Academic Knowledge API(書誌引用データ、日本非対応)

AWS: Amazon Web Service

12か月間の無料枠あり。

  • Amazon Lex(音声認識、自然言語理解)
  • Amazon Polly(音声合成)
  • Amazon Rekognition(物体検出、節度、顔分析、感情、顔比較、顔認識、有名人)

リクルート A3RT

  • Listing API(リスト作成、レコメンド、相関など)
  • Text Classification API
  • Text Suggest API
  • Proofreading API(誤字検出)
  • Talk API(日常会話)
  • Image Influence API(影響度評価、肉のみ)
  • Image Generate API(デザイン生成、ネイルのみ)
  • Image Search API

DoCoMo API

TODO: 詳細
https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=dialogue&p_name=api_usage_scenario

モデル、データセット、ビッグデータ、リソース

学習済みモデル

ImageNet

Xception: TensorFlow
VGG16: TensorFlow, Keras
VGG19: TensorFlow, Keras
ResNet50: TensorFlow, Keras
InceptionV3: TensorFlow, Keras

データセット、ビッグデータ

List of datasets for machine learning research
UCI 機械学習リポジトリのデータセット一覧(和訳)

MNIST database: Modified NIST database

MNISTの手書き数字データセットを用いた学習は、ディープラーニングの"Hello, World"にあたる。
NISTの手書き数字データセットを元に、28x28に正規化され、重心が中心となるよう配置された。
60,000個の訓練データと10,000個のテストデータからなる。

NIST database: National Institute of Standards and Technology database

アメリカ国立標準技術研究所(NIST)の標準基準器データ(SRD: Standard Reference Data)にある特別データベース(SD:Special Database)が学習に使用できる。
MNISTの元となったデータセットはSD-1(高校生の手書き数字)とSD-3(国勢調査局職員の手書き数字)だが、現在はダウンロードできない。
手書き数字は、白黒の二値画像で、アスペクト比を維持したまま20x20に収まるように縮小されていた。
その他に、手書き文字、指紋(Fingerprint)、犯罪者の顔写真(Mugshot)などのデータがダウンロードできる。

CIFAR-10, CIFAR-100

ラベリングされた8,000万個の小さな画像(32×32)からなるデータセット。
CIFAR-10は10分類、各6,000個の合計60,000個。50,000個を学習に、10,000個をテストに使用する。
CIFAR-100は100分類、各600個の合計60,000個。ただし、20の大分類に分けられる。

STL-10

CIFAR-10に似ているが、こちらは96x96で教師なし学習向け。

SVHN: The Street View House Numbers

Googleストリートビューから抜き出した数字画像のデータセット。
数字を表す範囲は別ファイル(*.mat)に記述されている。
非商用のみ。

Kaggle

データサイエンスの競技プログラミングが行われている。
学習のためのビッグデータが提供されている。
普通には収集できない医用画像のデータセットなどもある。

ImageNet

ラベリングされた画像のURLビッグデータ。
ImageNetは画像の著作権を保持していないので、URLをダウンロードできる。
ラベルの階層構造はWordNetの名詞に従っており、Synsetの情報もダウンロードできる。
Kaggle上でImageNetのチャレンジも行われている。

WordNet, 日本語 WordNet

1985年から続く、英語の類語辞書を作成するプロジェクト。
Synset(類語セット)が定義され、他のSynsetと関連付けられている。
BSDライセンスで提供されている。
NICTが作成した日本語版もBSDライクなライセンスで提供されている。

YouTube-8M, Sports-1M

GoogleのKnowledge Graphでタグ付けされた800万件の動画データセット。

Yahoo! Webscope Datasets

Yahoo! Labsが多数のデータセットを公開している。
N-gram、音楽の評価、Flickr画像、有名人の顔、FAQなど。
ダウンロードにはアメリカ版Yahoo! IDが必要。

リソース

パブリックドメインやCC0のものは探せば見つかる。
Googleの検索オプションでもライセンスを選択できる。

Public Domainまとめ

CC Search
複数のCC公開サイトからダウンロードできる。

クリエイティブ・コモンズ・ジャパン
CCライセンスで公開されたものの情報が記載されている。

画像

無料マンガや画像まとめ系も参考になる。

Pixabay
CC0の画像や動画を扱う最大級のサイト。

Visual Hunt
10万枚を超えるCC0画像から検索できる。

O-DAN
複数のサイトからCC0, CC-PDを横断検索できる。

STOCK UP
33のサイト2万件からCC0かパブリックドメインの画像を検索できる。

Flickr
「No known copyright restrictions」でCC0やPDの写真を検索できる。

米国航空宇宙局(NASA)
米国政府の機関であり、NASAが作成するすべての画像はパブリックドメインで公開されている。

Wikimedia Commons
CC0やパブリックドメインが多く、古い芸術作品を探すのに向いている。

映像

CC0やパブリックドメインは少ないが、ロイヤリティフリーならそれなりに見つかる。

Pexels Videos
CC0の動画(音声なし)がある。

YouTube
CC0で検索すると幾つかヒットする。
フィルタでクリエイティブ・コモンズに制限することもできる。

パブリックドメインDVD
翻訳した字幕をつけると、権利が発生するので注意。

音声

音声コーパスの欄も参照。

LibriBox
パブリックドメインのオーディオブック(朗読)を公開している。

SoundCloud - NASA
サウンドクラウドのNASAのページ。
NASAの公開した画像や映像はパブリックドメイン。

PDSound.org
パブリックドメインの環境音などが公開されている。

音楽

Jazz-on-Line
著作権が切れているのでパブリックドメイン。

IMSLP Petrucci Music Library
パブリックドメインの楽譜をダウンロードできる。

事例

流れを見るために深層学習に関連しないものも列挙。

ゲーム

  • IBM Deep Blue(チェス/1997)
  • Bonanza(将棋/2005)
  • IBM Watson(クイズ/2011)
  • AlphaGo(囲碁/2015)
  • DQN(ゲーム/2015)
  • DeepZenGo(囲碁/2016)
  • AlphaZero(チェス, 将棋, 囲碁/2017)

音声アシスタント

  • 名工大 MMDAgent(2010)
  • Siri(Apple iPhone/2012, HomePod/2018)
  • Google Assistant(Google Now/2012, Google Home/2017)
  • しゃべってコンシェル(DoCoMo/2012)
  • Yahoo!アシスト(Yahoo!/2012)
  • Cortana(Microsoft Windows/2015)
  • Alexa(Amazon Echo/2017)
  • Bixby(SAMSUNG Galaxy S8/2017)
  • Clova(LINE Clova WAVE/2017)

チャットボット

人工無能は考える
人工無能
チャットボットを探してみよう
BOTで使える会話API・ライブラリ・サービスまとめ

  • ELIZA(1966)
  • ゆいぼっと(1996)
  • ペルソナウェア(1998)
  • 偽春菜(2000)
  • A.L.I.C.E.(2000)
  • 人工無能うずらV8(2001)
  • 何か(2001)
  • 伺か(2002)
  • ALAIN A.I.(2009)
  • Microsoft りんな(2015)
  • Microsoft Tay(2016)
  • DoCoMo Repl-AI イーオのごみ分別案内(2017)
  • ALBERT Proactive AI ワイン好き!みのりさん(2017)

音声合成、歌声合成

  • 東芝 LaLaVoice(2001)
  • Microsoft SAPI 5.3(2006)
  • アクエスト AquesTalk(2006)
  • エーアイ AITalk(2007)
  • YAMAHA VOCALOID2 初音ミク(2007)
  • 飴屋/菖蒲 UTAU(2008)
  • 名工大 Sinsy(2009)
  • OSS Open JTalk(2009)
  • HOYA VoiceText(2009)
  • CeVIOプロジェクト CeVIO(2013)
  • エーアイ VOICEROID+(2017)
  • Google WaveNet(2017)

アンドロイド

世界の人型ロボット

  • Honda ASHIMO(2000)
  • 国防科技大 先行者(2000)
  • JST CB2(Child-robot with Biomimetic Body)(2007)
  • 産総研 HRP-4C 未夢(2009)
  • 韓国工業技術研究所 EveR-4(2011)
  • NASA Robonaut-R5 Valkyrie(2013)
  • ソフトバンク Pepper(2014)
  • ハンソンロボティクス ソフィア(2016)
  • ナンヤン工科大学 Nadine(2016)
  • 中国科学技術大学 Jia Jia(2016)

ジェミノイド、アクトロイド

アクトロイド

  • ココロ アクトロイド(2003)
  • ココロ アクトロイドDER(2005)
  • ココロ アクトロイドDER2(2006)
  • ココロ アクトロイドDER3(2008)
  • ココロ I-FAIRY(2009)
  • ココロ アクトロイド サラ(2010)

ジェミノイド

  • 石黒研 Repliee-Q1(2003)
  • 石黒研 Repliee-Q1 expo(2004)
  • 石黒研 Repliee-Q2(2005)
  • ATR ジェミノイド(2005)
  • ATR ジェミノイドHI-1(Hiroshi Ishigro 1)(2006)
  • ATR ジェミノイドHI-2
  • 石黒研 ジェミノイドHI-3
  • 石黒研 ジェミノイドHI-4(2013)
  • 石黒研 ジェミノイドHI-5
  • ATR ジェミノイドF(ACTROID-F) ロシア人ハーフ(2010)
  • ATR ジェミノイドDK ヘンリック・シャールフ(2011)
  • ATR ジェミノイドF みなみ(2012)
  • 石黒研 米朝アンドロイド(2012)
  • ATR コドモロイド/オトナロイド(2014)
  • ATR ERICA(2015)
  • 石黒研 U(2017)

エーラボ

  • エーラボ マツケンアンドロイド(2013)
  • エーラボ ASUNA(2014)
  • エーラボ 地平アイこ(2014)
  • エーラボ 地平ジュンこ(2015)
  • エーラボ マツコロイド(2015)
  • エーラボ レオナルド・ダ・ヴィンチ・アンドロイド(2015)
  • エーラボ 夏目漱石アンドロイド(2016)
  • エーラボ 未来まどか(2016)
  • エーラボ tottoちゃん(2017)

その他

  • ATR CB-i(2008)
  • ATR Telenoid R1(2010)
  • ATR Telenoid R4(2013)
  • 石黒研 Alter(2016)

ペットロボット

  • ソニー AIBO "ERS-110"(1999) - 犬型
  • オムロン NeCoRo(2001) - 猫型
  • セガトイズ 夢ねこ(2002) - 猫型
  • fuRo morph3(2003) - 人型
  • 産総研 PARO(2005) - アザラシ型
  • NICT Keepon(2007) - ぬいぐるみ型
  • セガトイズ E.M.A.(2008) - 人型
  • 富士ソフト PALRO(2010) - 人型
  • スマートドール 末永みらい オートマチック(2014) - 人型
  • アルデバランロボティクス Nao Evolution(2014) - 人型
  • Intel Jimmy(2015) - 人型
  • Sphero BB-8(2015) - 球型
  • DMM.com プリメイドAI(2015) - 人型
  • ヴイストン Sota(2015) - 人型
  • シャープ RoBoHoN(2016) - 人型
  • iDoll(2016) - ドール型
  • ガンシェルジュ ハロ(2018) - 球型
  • ヴイストン Kibiro(2016) - 人型
  • ユカイ工学 Qoobo(2017) - しっぽクッション
  • ソニー aibo "ERS-1000"(2018) - 犬型

特殊ロボット

ボストン・ダイナミクスのヒト型ロボットが、なんと「バク宙」するまでに進化した(動画あり)

  • ロボット掃除機 ルンバ(2002)
  • 輸送用ロボット BigDog(2007)
  • 歯科実習用ロボット シムロイド(2009)
  • 人型ロボット Atlas(2013)
  • 人型ロボット Atlas, The Next Generation(2016)
  • 手話ロボット Project Aslan(2017)
  • 医療シミュレータ mikoto(2017)

ニューラル機械翻訳

  • Google翻訳
  • Microsoft翻訳
  • Skype同時通訳
  • 百度翻訳

その他

映像

超解像

画像

物体認識

自然言語処理

医療

ガン判別
創薬
顔から年齢、性別推定
顔から性的指向推定

その他

自動運転
DoNotPay(弁護士)
発電所設備の故障予知
水道設備の使用量予測

アイディア

  • 手書き文字を入力として、ラベルを教師とすると、手書き文字認識
  • 画像を入力として、ラベルを教師とすると、オブジェクト検出
  • 画像を入力として、オブジェクト検出の結果を教師とすると、画像セグメンテーション
  • 画像を入力として、様々な手法のセグメンテーション後の画像を教師すると、画像セグメンテーション(Not 蒸留)
  • 画像セグメンテーションで文字列を検出し、OCR、数式OCR(MathML, MathJaxなど)
  • OCR後の文字列をN-gram等で補正して精度を向上
  • MathMLをwebMathematicaに送って自動計算
  • 名刺画像を入力して、名刺OCR
  • 車画像を入力して、車種や色、ナンバープレート、車検日など
  • 人画像を入力して、人物判定、キャラクター判定
  • 人画像を入力して、ファッション判定
  • 顔画像を入力して、顔判定、感情判定
  • 顔画像を入力して、髪型判定
  • 顔画像と髪型を入力して、髪型変形
  • 縮小画像を入力として、元画像を教師とすると、超解像
  • ぼかし画像を入力として、元画像を教師とすると、シャープネス
  • ノイズを入れた画像を入力として、元画像を教師とすると、ノイズ除去
  • 透かしを入れた画像を入力として、元画像を教師とすると、透かし除去
  • 物体を書き込んだ画像を入力として、元画像を教師とすると、物体除去(GANで精度向上)
  • 物体が写り込んだ画像を入力として、物体を除去した画像を教師とする、物体除去
  • 2つの画像を入力して、差分判定、状況変化判定
  • 白黒画像を入力として、元画像を教師とすると、自動着色
  • 輪郭を抽出した画像を入力として、元画像を教師とすると、自動着色
  • レンダリング画像を入力として、3Dモデルを教師とすると、立体化
  • マイクロスコープ画像で段階的に学習すると、テクスチャの細部を自動生成
  • タイムラプスや定点画像で時間帯を変えて学習すると、時間経過、昼夜変更、季節変更
  • JPEG画像(不可逆圧縮画像)を入力として、元画像を教師とすると、JPEGデコーダー
  • CAPTCHA画像を入力として、答えを教師とすると、CAPTCHA解読器
  • 暗号化された値を入力として、暗号化方式を教師とすると、暗号方法判別
  • 暗号化された値と暗号キーを入力として、答えを教師とすると、暗号解読
  • Kinectの画像を入力として、深度情報を教師とすると、奥行き検出
  • Kinectの人画像を入力として、骨格情報を教師とすると、骨格検出
  • Kinectの顔画像を入力として、感情情報を教師とすると、感情認識
  • Kinectの顔画像を入力して、EyeTracker4Cの視線位置を教師とすると、視線検出
  • 画像を入力として、視線ヒートマップを教師とすると、注目度判定
  • 言語コーパスを入力として、word2vecで単語間の関連性を学習すると、類語
  • 文章の単語を入力として、元文章を教師とすると、説明文作成(意味理解なし)
  • 文章を入力して、サマリーを教師とすると、要約作成
  • 文章を入力して、形態素解析結果、構文解析結果を教師とすると、文章解析器
  • 画像を入力して、オブジェクト検出し、注目度とラベル群から説明文を構築
  • 説明文を入力として、画像を教師とすると、画像生成(GANで精度向上)
  • 映像を入力して、人物検出、登場時間累積で判定すると、登場人物
  • 映像を入力して、人物検出と音声認識で、台本作成
  • 映像で顔の口元を入力として、音声を教師とすると、読唇
  • 映像で手話を入力として、字幕を教師とすると、手話翻訳
  • 英語文を入力として、日本語文を教師とすると、翻訳
  • 音声(音素)を入力として、文章を教師とすると、音声認識
  • 音楽を入力として、音楽の声抜き(Off-Vocal)を教師とすると、カラオケ
  • 肉声だけ認識できたら、強調すれば、補聴器
  • 音楽を入力として、楽譜を教師とすると、採譜
  • 文章を入力として、音声を教師とすると、合成音声
  • 音(反響音)を入力として、部屋名を教師とすると、部屋判定
  • 異常音(悲鳴、爆発、割れる、倒れる)を入力として、学習すると、異常検出
  • スパムメールを学習さえると、スパム判別
  • メールを入力として、返信を教師とすると、自動返信
  • WEBページを入力として、広告ブロックWEBページを教師とすると、広告ブロッカー

法律

萌えキャラ生成AIを題材に「AIビジネスと法律」を学ぼう
著作物が自由に使える場合は?
著作物が自由に使える場合

改正個人情報保護法

2017.5.30より全面施行。
匿名加工情報にすれば本人の同意は不要。

個人情報

住所・氏名・生年月日・性別などの、特定の個人を識別できるもの。

個人識別符号

顔認識データ、指紋認識データなど身体特徴のデータ。
旅券番号、免許証番号、マイナンバーなど個人を判別できるデータ。

要配慮個人情報

人種、信条、社会的身分、病歴、犯罪の経歴、犯罪により害を被った事実など。

個人情報になる可能性が高いもの

  • 電話番号 それのみで個人を特定することは難しい。 しかし、氏名などと一緒に管理され、個人を特定することができるようになっている場合は、個人情報の一部として扱われる。
  • メールアドレス 企業などの場合はローカル部に氏名を用いている場合がある。 ドメインとローカル部からメールアドレスで個人を特定することが可能。 その場合は個人情報として扱わなければならない。 ランダムな記号を用いた場合はその限りではない。

個人情報に当たらないもの

  • IPアドレス、携帯端末ID それのみで個人を特定することは難しい。 いずれも機械に結びつく情報のため。

著作権

現行法では、AIを道具として使用した場合は著作権が発生する。
AIに指示だけ出してAIが創作したものには著作権が認められない。
著作権法 47条の7によって、学習のための使用は可能と思われる。

著作権法 第12条の2(データベースの著作物)

情報の選択又は体系的な構成によつて創作性を有するものは保護する。
※タウンページの職業別分類体系に創造性が認められた判例がある。
※選択的に集められた深層学習データは創造性が認められる可能性がある。

著作権法 第30条の4

技術の開発又は実用化のための試験に利用することができる。
※開発中を理由に同梱してよいことにはならない。

著作権法 第47条の6

検索サービスは、公開されている情報を利用することができる。
※違法著作物は提供を停止しなければならない。

著作権法 47条の7

情報解析のために、著作物を利用できる。
※記録・翻案は許可されているが、譲渡・公衆送信は不可。
※諸外国の場合は非営利に限定されていることもある。

中枢神経の神経細胞は1000億~2000億と言われている。

小脳だけで1000億以上の神経細胞がある。(小脳は大脳の1/10の大きさ)
小脳はパーセプトロンと同じ動きをする。(小脳パーセプトロン仮説)
小脳は3層構造?

大脳皮質の神経細胞数は100億~180億個程度。
大脳新皮質は6層構造。

小脳のモデル

視覚

視野の中心2度は700万画素程度。
視野全体に適用すると5億7600万画素。
1000万色を見分ける。
視力1.0の人間の目の検出限界は50μm(50万dpi)。
黒背景から光を検出する場合は5μm(500万dpi)。
60FPSでほぼちらつきがなくなる。
VRでは90~120FPSはないと酔う。

桿体細胞(R)

明暗を認識するための細胞。
片目で1億2000万個。

錐体細胞(S,M,L)

色を認識するための細胞。
片目で650万個。

視神経

神経細胞数は120万個。
解像度が低く感じられるが、脳内で結合して処理されている。
また残像現象が起きるのは差分伝達方式のため。

サッカード眼球運動

一次視覚野(V1)

6層構造。

前有線皮質(V2)

輪郭に敏感。
V1と多くの共通特性がある。
V1からフィードフォワードでV3、V4、V5へ情報を送っている。
V1への強いフィードバックを持つ。

3次視覚皮質複合体(V3)

広域的な動きの処理に関わる。

V4

注視により強い調整を受ける。

MT野(V5)

運動や速度に敏感。

聴覚

時間差手がかりとレベル差手がかりは別々に処理されている。

可聴域

20~20,000Hz程度。
人間が音を認識できる領域。
年齢とともに高周波部分が聞こえなくなってくる。
デジタル化するには、2倍の周波数が必要なので、40kHzあればよい。

時間分解能

2音のクリック音における時間分解能は1~2ms程度、それ以下だと一つの音と認識する。
音にもよるが3音だと50~200ms程度。

音の順序を認識しようとすると300~700msの長さが必要になる。
音声だと100~150ms程度の長さで順序を正確に認識できる。

鼓膜の振動が中耳の耳小骨により振動圧が約22倍となる。
基底膜の振動位置が周波数により異なる。

音の四要素

音響音声学
音圧、強さ、大きさ
音の長さ
音程、ピッチ
音色、基音、倍音

音質について

人間の耳には、CD音源で十分だが、AIで信号処理をする場合は、聞こえない高周波成分なども判断材料になるのではないか。

8kHz: 固定電話(ISDN)
22.05kHz: AMラジオ
32kHz: FMラジオ
44.1kHz 16bit: 音楽CD(CD-DA)
48kHz: DVD, YouTube

なぜハイレゾは「バカげている」のか

参考資料

書籍

深層学習をやるならこれを読め!

人工知能は人間を超えるか ディープラーニングの先にあるもの

機械学習やディープラーニングの分野は初めてという人にオススメ。

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

実際に触って覚えたい人向け。
数学の基本、Pythonの基本、ディープラーニングの基本が学べる。
わかっている箇所は読み飛ばして拾い読みするとよい。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

オライリー本。
フレームワークを使わずにスクラッチでディープラーニングを組める。

TensorFlowはじめました2 機械学習で超解像─Super Resolution

Pythonの行列計算とTensorFlowの計算グラフの分かりやすい説明が載っている薄い本。
一通りチュートリアルを終えて、次に何をやろうかと思ったときにオススメできる。
『TensorFlowはじめました1』の方は内容が古くなってきたので読まなくても良い。

深層学習 (機械学習プロフェッショナルシリーズ)

青いイルカ本。
いろいろなフレームワークを試したり、知識がついてきたら読みたい本。

WEB

Deep Learning Abstract

ディープラーニングの歴史などがよくわかる。

サルでもわかるディープラーニング入門 (2017年)

ディープラーニングについて一通り勉強できる。

機械学習を一から学ぶときやってはいけないこと

実際に取り組んでみての感想。共感できる部分が多い。

初めての機械学習ロードマップ

過学習の説明がわかりやすい。

ニューラルネットワークと深層学習

パーセプトロンとバックプロパゲーションの説明がわかりやすい。
MNISTの手書き文字認識を例に説明されている。

Courseraの機械学習コースのススメ 前編

Courseraの機械学習コースは日本語字幕で見れる。

arXivTimes Indicator

論文がまとめられている。
分類分けされており、日本語の要約が見れるので使いやすい。

TensorFlow - クラスキャット

よくまとまっている。

自称・世界一わかりやすい音声認識入門

ディープラーニングではないが、音声認識の基礎を学べる。

パーセプトロンからはじめる分類問題