AIツール最新動向2018

# はじめに
先日[AIの最新動向](https://qiita.com/MariMurotani/items/bee91013937668c0d534)について勉強しました。今回はそれをどうやって技術的に活用していくのか具体的な方法論について調査していきます。

# 1. APIを利用したAI技術導入
AIの活用方法は2種類に分かれます。トレーニングされたモデルを利用する方法とモデルのトレーニングから始める方法です。
一番手っ取り早く利用できるのは既にトレーニングされたモデルを利用する事でAPIとして提供されていて導入が簡単に行えます。
モデルの性能向上をAPI提供元がやってくれているので製品の品質確保については一番信頼ができます。
他にもパッケージ製品の中にAIが組み込まれたものが多く提供されているものもありますが業種ごとに選択肢が違うので今回は省略します。
コールセンターであったり、倉庫管理であったり特定業務に特化しているので非常に勉強になると思います。
[こちら](https://medium.com/imlyra/a-list-of-artificial-intelligence-tools-you-can-use-today-for-businesses-2-3-eea3ac374835)のページに纏まっているので参考にしてください。


| API提供元 / 機能 | URL | テキスト分類 | 音声認識 + NLP | テキスト認識→音声読み上げ | 画像認識 → 物体検出 | 動画認識 → 物体検出 | 対話型インターフェイス(チャットボット) |
|:--|:--|:--|:--|:--|:--|:--|:--|
| リクルート: A3RT | https://a3rt.recruit-tech.co.jp/ | Text Classification |  |  | Image Search |  | Talk API |
| Google: GCM | https://cloud.google.com/ |  | Could Speech |  | Cloud Vision | Cloud Video Intelligence |  |
| Amazon: AWS | https://aws.amazon.com/ |  |  | Polly | Rekognition Image | Rekognition Image | Amazon Lex |
| IBM: IBMCloud | https://www.ibm.com/cloud-computing/ | Natural Language Classifier | Natural Language Understanding | ToneAnalyzer | Visual Recognition | Visual Recognition | Watson Conversation  |


# 2. データ・モデルからのAI技術導入
既にトレーニングされたモデルをより低レヴェルで利用する方法です。
学習済みモデルを更に強化して独自のモデルを作成したり蒸留したりする事が可能です。
データ・モデルの権利については[こちら](https://storialaw.jp/blog/2977)のサイトで詳しく解説されています。

| 学習済みデータ・モデル(Apache License 2.0)<br/> |  |  |  |
|:--|:--|--:|--:|
| https://github.com/tensorflow/models/tree/master/research/ |  |  |  |
| データモデル | 機能 |  |  |
| adversarial_crypto | 通信保護とデータ・セキュリティに応用できるモデル<br/>特定の暗号アルゴリズムを規定しておらず、EndToEndの反復トレーニングにより、<br/>ニューラルネットワークがどのように暗号化と復号化を行うかを学習を実証 |  |  |
| adversarial_text | 入力テキストを分類するモデル |  |  |
| attention_ocr | ストリートビュー画像からの構造化情報の注意に基づく抽出 |  |  |
| audioset | オーティオセット集約した大規模データセット<br/>200万人以上の人間がラベルを付けた10秒間のYouTubeビデオサウンドトラック |  |  |
| autoencoder | 様々な自動エンコーダー |  |  |
| brain_coder | 強化学習によるプログラムの合成<br/>プライオリティキュートレーニングとよばれ人間が読める短いプログラムを合成することができる |  |  |
| cognitive_mapping_and_planning | 視覚ナビゲーションのための空間位置情報のマッピングおよびプランニング<br/>https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0ahUKEwjq3o3Mld7YAhVHKJQKHSukAEoQtwIIQzAC&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DBNmz3xBtcJ8&usg=AOvVaw1fJsJ4WfqS6gd3b-ulYevn |  |  |
| compression | Residual GRU networkを利用した画像の圧縮と解凍<br/>バイナリにエンコード/デコード,可逆圧縮 |  |  |
| delf | 画像マッチングと検索のローカル機能<br/>2つの同じ目印を持つ画像をマッチさせるなど |  |  |
| differential_privacy | プライバシー保護データマイニング用のモデル |  |  |
| domain_adaptation | ドメイン分割ネットワーク |  |  |
| gan | 画像の翻訳、超分解、模擬画像からの学習 |  |  |
| im2txt | 画像に注釈をつける |  |  |
| inception | 画像の分類をする<br/>https://book.mynavi.jp/manatee/detail/id=77514 |  |  |
| learning_to_remember_rare_events | a large-scale life-long memory module for use in deep learning.<br/>https://medium.com/@arxivtimes/%E5%A4%96%E9%83%A8%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9Fone-shot%E3%81%A8-edward-6c488ac54d34 |  |  |
| lfads | sequential variational autoencoder for analyzing neuroscience data. |  |  |
| lm_1b | 10億語のベンチマークでの言語モデリング |  |  |
| namignizer | 名前を認識してKaggle Baby Name Databaseを元に生成する |  |  |
| neural_gpu | highly parallel neural computer. |  |  |
| neural_programmer | neural network augmented with logic and mathematic operations. |  |  |
| next_frame_prediction | probabilistic future frame synthesis via cross convolutional networks. |  |  |
| object_detection | 一つの画像内から複数のオブジェクトを選別 |  |  |
| pcl_rl | code for several reinforcement learning algorithms, including Path Consistency Learning. |  |  |
| ptn | 3Dオブジェクトを2D画像から再生成するためのモデル<br/>https://papers.nips.cc/paper/6206-perspective-transformer-nets-learning-single-view-3d-object-reconstruction-without-3d-supervision.pdf |  |  |
| qa_kg | 質問応答のためのモデル |  |  |
| real_nvp | density estimation using real-valued non-volume preserving (real NVP) transformations. |  |  |
| rebar | low-variance, unbiased gradient estimates for discrete latent variable models. |  |  |
| resnet | deep and wide residual networks. |  |  |
| skip_thoughts | センテンスエンコーダー<br/>言い換えの検出やpositive/negativeの分類などが可能<br/>http://blog.brainpad.co.jp/entry/2017/06/12/160000 |  |  |
| slim | 画像分類モデル<br/>https://kivantium.net/tensorflow-vgg16 |  |  |
| street | identify the name of a street (in France) from an image using a Deep RNN. |  |  |
| swivel | the Swivel algorithm for generating word embeddings. |  |  |
| syntaxnet | 言語解析<br/>http://msyksphinz.hatenablog.com/entry/2016/05/26/020000 |  |  |
| tcn | Self-supervised representation learning from multi-view video. |  |  |
| textsum | テキストのサマライズ化 |  |  |
| transformer | spatial transformer network, which allows the spatial manipulation of data within the network. |  |  |
| video_prediction | predicting future video frames with neural advection. |  |  |


# 3. モデルのトレーニング
モデルのトレーニングには途方もない時間がかかるので自動化・支援ツールがあります。
[参考1] 
(http://itpro.nikkeibp.co.jp/atcl/idg/17/100200076/100200001/?ST=cm-software&P=3)
[参考2](https://www.educba.com/9-best-data-modeling-tools/)

### アノテーションツール一覧
モデルをカスタマイズする為に、人力での強化学習をサポートするツール群を紹介します。

| サービス | URL |  |
|:--|:--|:--|
| Cloud AutoML | https://cloud.google.com/automl/ | GUIあり |
| Prodi | https://prodi.gy/ | GUIあり/※WebのSandBoxがあるのでオススメ |
| PyBrain | http://pybrain.org/pages/home |  |
| Skymind | https://skymind.ai/platform | GUIあり |
| H2o | https://www.h2o.ai/ | GUIあり |

## 4. Cloud AutoML	
[参考](https://japan.zdnet.com/article/35113322/)

上記でも紹介されているとおり、モデル強化→利用までのワークフローをサポートするツールができました。	
例えば画像のエレメント抽出モデルを強化する為のラベリング作業がWebのUI上で簡単に行うことができ、	
GCP上にデプロイAPIで利用までの一覧のワークフローをサポートしていてカスタマイズされたデータ・モデルを簡単に利用する事ができます。

とりいそぎ、自腹でCloud AutoMLの検証ができるか財布と相談してみます。
APIで一歩先をいってるIBMさんが何のツールを出すかきになりますね！