【AIの概況について】
■AIとは
http://ainow.ai/artificial-intelligence-3/
第一次AIブーム 推論・探索の時代(1950年代後半~1960年代)
第二次AIブーム 知識をいれると賢くなる(1980年代)
第三次AIブーム 機械学習・深層学習技術の発展(現在)
⇒機械学習とディープラーニング
■日本のAIサービス事業
AIサービスマップ
http://ainow.ai/2017aisummer/
■AI関連技術の4つの層
https://aizine.ai/ai-opensourse1009/
(1)AI (人工知能)アプリ/サービス
スマホあるいは家電製品で使用することができるサービス。
例)検索サービス、チャットボット、スマートスピーカーおよびSiriなど
(2)AI (人工知能)プラットフォーム
自然言語理解/画像認識/動画分析/音声認識/機械翻訳などのAI (人工知能)機能をWebブラウザ経由で提供するサービス(有料)
例)Google Cloud ML、Amazon ML、IBM Watson
(3)フレームワーク
AI (人工知能)アプリ/サービス開発時に使用する部品集
Python等のプログラミング言語によりフレームワークの各部品を呼び出すことにより効率良く開発することができる。
TensorFlow(Google)、Chainer(Preferred Networks)、Keras、Cognitive Toolkit(Microsoft)
(4)ハードウェア
GPU(Graphics Processing Unit)はCPUの約10倍以上の処理性能を持つ
■テンソルフローの環境構築について
https://www.slideshare.net/piacere_ex/ai1aitensorflow
① 各種OS用のpip(Pythonパッケージマネージャ)経由 でインストールする
② 【Windows、Mac】Anaconda(Python開発環境マネージャ)経由でインストールする
③ DockerからTensorFlowイメージをインスト―ル(pull) する
【機械学習入門】
■Chainerチュートリアルについて
https://tutorials.chainer.org/ja/index.html
⇒機械学習・ディープラーニングに入門できるサイト
環境構築いらずでプログラム実行可能!
・Open in Colab から Google Colaboratory へ移動
・自分のドライブへノートブックをコピーする
・コードを実行しながら解説を読んでいく
という流れ
※Google Colaboratory(Colab)
クラウド上で Jupyter Notebook 環境を提供する Google のウェブサービス
・Markdown記法でメモや解説などの記述の追加
・プログラムを実行と、その結果の確認
・GPUも無料で使用することができる
■機械学習は3種類手法
http://blog.brainpad.co.jp/entry/2017/02/24/121500
〇教師あり学習 (supervised learning)
正解のある訓練データ(Labeled Data)
〇教師なし学習 (unsupervised learning)
正解のないデータ
クラスター分析、規則性や相関性、特徴を解析
例)データマイニング
〇強化学習 (reinforcement learning)
試行錯誤を通じて「価値を最大化するような行動」
例)AlphaGo
■教師あり学習
回帰 (regression)
例)値段を予測する
https://tutorials.chainer.org/ja/src/07_Regression_Analysis_ja.html
単回帰分析
入力:出力=1:1
例)部屋の広さ x から家賃 tを求める
重回帰分析
入力:出力=N:1
例)部屋の広さを x1、駅からの距離を x2、…、犯罪発生率を x M から家賃 tを求める
分類 (classification)
例)画像、文字、音声認識
Step 1データの特徴や関係性を計算するモデルを決める
Step 2目的関数(モデルの最適なパラメータを求めるための関数)を決める
Step 3パラメータを最適化する
モデルのいろいろ
https://qiita.com/ishizakiiii/items/f6909696c616fd6294ca
■NumPy を用いた重回帰分析
https://tutorials.chainer.org/ja/src/08_Introduction_to_NumPy_ja.html
NumPyはPython で数値計算を高速に行うためのライブラリである
Google Colaboratory上のノートブックにはデフォルトでインストールされている
■scikit-learn を用いた重回帰分析
https://tutorials.chainer.org/ja/src/09_Introduction_to_Scikit-learn_ja.html
scikit-learn は Python のオープンソース機械学習ライブラリ
様々な機械学習の手法が統一的なインターフェースで利用できる
Step 1:データセットの準備
Step 2:モデルを決める
Step 3:目的関数を決める
Step 4:最適化手法を選択する
Step 5:モデルを訓練する
⇒新しい入力値に対する予測の計算(推論)
■ニューラルネットワークとは
https://tutorials.chainer.org/ja/src/13_Basics_of_Neural_Networks_ja.html
微分可能な変換を繋げて作られた計算グラフ
ニューラルネットワークの各層では、前の層の出力値に「線形変換」と「非線形変換」を順番に施している
⇒一つの大きな関数と考えられる
※ディープラーニング (deep learning) :
層の数が非常に多いニューラルネットワークをモデルにした機械学習の手法や、その周辺の研究領域のこと
ニューラルネットワークで表現されるような複雑な関数の場合、
繰り返し数値計算を行って目的関数の最適化する。
例)勾配降下法、ミニバッチ学習:確率的勾配降下法(stocastic gradient descent; SGD)
■Chainer によるネットワークの訓練
https://tutorials.chainer.org/ja/src/14_Basics_of_Chainer_ja.html
Step 1 : データセットの準備
Step 2 : ネットワークを決める
Step 3 : 目的関数を決める
Step 4 : 最適化手法を選択する
Step 5 : ネットワークを訓練する