AI研究用「打ち出の小槌」サービス（デモ）

#こ、これは、、いったい何よ？

- **ひと振りするだけで、コインがザックザク出てくる 、というサービス**（デモ版）を作ってみた、というお話です。  
http://35.237.23.189/jcoin_generator.html
- →　まずは、[ Shake it ! ] ボタンを押してみてください。  
（URLは変更または廃止することがあります）
- 以前、[コインをバラまいた画像から合計金額を推定するＡＩ](https://qiita.com/uminor/items/6b71dd81d05f6e5359cf)
という記事を投稿しましたが、それに用いた学習データ生成エンジンを切り出し、
サービス化したものです。

#そ、それで、、何をしたいのよ？
- いまどきのAI（人工知能）といえば、機械学習とその応用を指すことが多いように思います。
- 機械学習は一般に、たっくさんのデータが必要となります。
- 機械学習の中ではポピュラーな「教師あり学習」については、個々の学習用データに「教師データ」（＝正解ラベル）を付与する必要があります。
- たとえば、画像につけるタイトルが教師データとなります。   
  （下記では、ねこ、いぬ、さる）  
 ![cat.png](https://qiita-image-store.s3.amazonaws.com/0/216556/9e89c1f1-3556-b344-08f5-18f87cd09c98.png) ＝　ねこ　　
![dog.png](https://qiita-image-store.s3.amazonaws.com/0/216556/b732ce5a-a791-8344-391a-ffa8461a5bfe.png)　＝　いぬ　　
![monky.png](https://qiita-image-store.s3.amazonaws.com/0/216556/9380da83-1640-f476-c00f-37d9550976f5.png)　＝　さる
- ところが、これ（教師データを付与すること＝ラべリンク）は、死ぬほど手間がかかります。
- きょうびの機械学習では、何千個、何万個、・・のラべリングが必要になることがありますが、これらは通常、人間が作業せざるを得ません。
- そんなわけで、フリー？なデータがネット上で用意していただいていたりするわけですが、 
http://www.cs.toronto.edu/~kriz/cifar.html
http://yann.lecun.com/exdb/mnist/

- おっと！　まとめてくれてる人がいました。。すばらしい！
https://www.codexa.net/ml-dataset-list/
- しかし当然ながら、独自のデータを用意したいときは大変！
- もっとも、ある程度のデータがたまれば、元データを機械的に加工する「水増し」とよばるデータ拡張が可能な場合はあるにはありますが・・。  
![cat--.png](https://qiita-image-store.s3.amazonaws.com/0/216556/11553909-ecf4-c3f8-38bd-b4b394c26031.png)＝ねこ　![cat-.png](https://qiita-image-store.s3.amazonaws.com/0/216556/39705356-5dad-9de5-e29d-cbc8a39f5f1c.png)＝ねこ　![cat---.jpg](https://qiita-image-store.s3.amazonaws.com/0/216556/cc69a023-4f75-3b6b-002e-e1d100f5704e.jpeg)＝ねこ　 

- もちろん、水増しだけではやっていけません。
- ところが、逆に**教師データから学習用データを自動生成が可能な機械学習**の分野があるのではないか、と考えました。
- 本件のコインバラまきネタ、などがそういう例です。 
![#000900_0016yen_03(01_01_01_00_00_00).png](https://qiita-image-store.s3.amazonaws.com/0/216556/de34f1b9-030d-d86f-ef11-1b45a63ef498.png)=16円 ![#000901_0028yen_07(03_03_01_00_00_00).png](https://qiita-image-store.s3.amazonaws.com/0/216556/be51775d-e320-96e8-6810-9150dbb62df0.png)=28円 ![#000902_0012yen_03(02_00_01_00_00_00).png](https://qiita-image-store.s3.amazonaws.com/0/216556/fa59825a-3a97-2bf2-8351-2cac379082cf.png)=12円 ![#000903_0009yen_05(04_01_00_00_00_00).png](https://qiita-image-store.s3.amazonaws.com/0/216556/9a028df9-36f6-1527-510b-d41b21f614a2.png)=9円 ![#000904_0021yen_03(01_00_02_00_00_00).png](https://qiita-image-store.s3.amazonaws.com/0/216556/6d8a03ac-b465-e740-d63e-0eb0489852aa.png) =21円・・・・・
（他にも自動生成ネタがあるのですが、それは別の機会に紹介しようかと・・）
- 実際には、金額そのものが教師データではなく、各種類それぞれのコインの枚数を教師データとしました。データ生成手順は次の通りです。  
 1. 乱数で各コインの枚数を決める。（この時点で金額が確定）
 2. その後、各コインの枚数に応じたバラまき画像を生成。

- これで学習したモデルが、現時点で実用に使えるわけではありません。
- しかし、**「多くのデータで学習する機械学習のモデルの振る舞い」を研究する材料**となり得る、と考えました。
- [打ち出の小槌サービスの画面](http://35.237.23.189/jcoin_generator.html)を、もう一度参照して下さい。**生成するデータの属性や数をパラメータで制御できる**、のは自動生成ならでは、です。

# こ、このサービスって、今どう使えるのよ？
- と言われると、これは「こんなことができるよー」という単なるデモでして、
- しいて言えば、生成されたページを右クリックとかして「名前を付けて保存」（ウェブページ、完全、=chromeブラウザの場合）とかすると、教師データがHTMLに記載された画像データのセットが得られます。
- しかし、このサービスそのものは、ショボくて安い IAAS の仮想マシンを使っており、大量のデータ生成を想定していません。（酷使するとたぶん死にます。）
- **本当に大量のデータを作りたい場合は、[コインバラまきネタのソースコード](https://github.com/uminor/jcoins/blob/master/jcoins_counter.ipynb) をとってきて、各自の環境に移植してください。**
- 億万長者になれるかも。先は長いですが。
- もし、今年中にこの記事に「いいね！」を100個もらえたら、本件のデータを使って「金額推定コンテスト」を開催しようと企んでいます。（ムリかーー）

#【まとめ】本件に限らず、機械学習用のデータを最初から自動生成する仕組みを「打ち出の小槌（うちでのこづち）」と呼ぶことにします。