アイデミープレミアムプランを受講してみました

2021/04/05

更新履歴:2021/04/10 作成したもの-予測結果を明示
更新履歴:2021/04/12 モデルを作成するのに作成したコードの掲載

###簡単な紹介
1988生まれの32歳。2020年にサイバー大学(ソフトバンク)を卒業。
AIの知識を深めるべく受講を決意


###なぜアイデミープレミアムプランにしたのか
- 完全オンラインで全てを完結できる
社会人+田舎に住んでおり完全オンラインはマストで、完全オンラインは受講開始当時結構レアでした。(コロナ前)
完全オンラインの破壊力を試してみて下さい。

- 経済産業省第四次産業革命スキル習得認定講座
ちゃんと履修し卒業すれば半額は国が補助してくれる(最大70%の補助 条件あり)
今がチャンスと思い入校

- 画像認識が学べること
画像認識専用のコースがあり、さらに料金は同じでデータサイエンスやその他のコースも学べる

###伝えたいこと
- 機械学習を学びたいが田舎に住んでいる、社会人だから時間がないという方は読んでください

- アイデミーさんでの体験談・学んだこと

- 技術的な内容にはあまり触れません

###アイデミーでの学習振り返り
私はアイデミープレミアムプランの6ヶ月コースを選択しました。(最短は3ヶ月)

- 1ヶ月目

環境設定-Pythonや機械学習を自分のパソコンでするための設定をしていきます。
ここでも結構つまづきやすいのですが、もちろんここからサポートしてくれます。

Pythonも基礎から習得できるようにカリキュラムが設定されていたので安心して受講できました。

Pythonの使い方を履修したら順次ライブラリを扱えるようになるためのクラスをこなしていきます。

PythonのライブラリNumpyの習得。こちらも別途カリキュラムが設定されています。個別のライブラリにスポットを当てていくのは珍しいなと感じましたがとても大事なライブラリですので素晴らしいですよね。

PythonのライブラリPandasの習得。

PythonのライブラリMatplotlibの習得。


- 2ヶ月目

ここからAIらしい授業内容になっていきます。データクレンジング手法を習得。
機械学習概論を履修。
ついに人工知能の実装のフェーズです。教師あり学習を習得。
スクレイピングを実装。

- 3ヶ月目

ディープラーニング基礎を履修。
CNNを実装

- 4ヶ月目

アイデミーのウェブサイトで紹介されていた男女認識を実装。
HTML/CSSの使い方を履修。WEBアプリ作成時に使用するため。
フレームワークFlaskを履修。
MNISTを使い手書き文字認識アプリの作成。今まで学んできた内容をフルに使いアプリの作成をしていきます。


- 5ヶ月目

最後に自分自身でアプリを作成。
コマンドラインの使い方を習得。
Gitの使い方を履修。
デプロイの仕方を履修。ついに自分で作ったアプリを全世界に公開します。(感動)

- 6ヶ月目

他のコースも無料で受講できるのでデータ分析講座を履修させてもらいました。
※他にも自然言語やAIマーケティングなどもあります。

###作成したもの
アイデミーさんの授業の中では実装することができるが目的になっていると思います。
ですのでそれぞれの授業の中ではAIの認識精度を上げる方法は学べても実際は試しません。
(すごい時間がかかってしまうため)
そこで今まで作ったアプリを高性能にしたらどうなるのかと気になっていたので既存のMNIST手書き文字認識アプリを高性能にしてみました。
※機械学習では精度が良ければ良い(過学習)というものではありません
一度試していただけたら幸いです。

appのリンク
https://hypermnist-app.herokuapp.com/

精度
![スクリーンショット 2021-04-10 14.20.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1114927/07211049-ff74-e11b-506f-393bc165fb9a.png)
今回モデルを作成するのに作成したソースコード

```
import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import mnist
from keras.layers import Activation, Dense, Dropout
from keras.models import Sequential, load_model
from keras import optimizers
from keras.utils.np_utils import to_categorical

(X_train, y_train), (X_test, y_test) = mnist.load_data()

X_train = X_train.reshape(X_train.shape[0], 784)[:6000]
X_test = X_test.reshape(X_test.shape[0], 784)[:10000]
y_train = to_categorical(y_train)[:6000]
y_test = to_categorical(y_test)[:10000]

model = Sequential()
model.add(Dense(256, input_dim=784))
model.add(Activation("sigmoid"))
model.add(Dense(128))
model.add(Activation("sigmoid"))
model.add(Dropout(rate=0.5))
model.add(Dense(10))
model.add(Activation("softmax"))

sgd = optimizers.SGD(lr=0.1)
model.compile(optimizer=sgd, loss="categorical_crossentropy", metrics=["accuracy"])

model.fit(X_train, y_train, batch_size=128, epochs=1500, verbose=1)
model.save('mymodel.h5')

score = model.evaluate(X_test, y_test, verbose=0)
print("evaluate loss: {0[0]}\nevaluate acc: {0[1]}".format(score))
```
###今後の活用
最近ではDXやAIなど避けては通れませんよね。でも学校ではほとんど教えてくれなかったという世代の方におすすめです。今後の活用で考えているのはドローンでの配送や倉庫の自動化です。日本では人口の減少は確実です。アイデミーさんでは実装を目的としたカリキュラムですので現場で使う目的にはあっていると思います。その代わりアルゴリズムの中身がどのような仕組みで動いているかには注力していません。知っていても損はしませんが現場ではあまり必要ないかもしれませんね。

###おわりに
注意：ここまでアイデミーさんの良いとこばかり書いてきたような気がしますが私は一人の受講者でアイデミーさんとは利害関係にありません。

というのは講師の方々のサポートがとても良かったです。Slack上で質疑応答をしていく感じですが順次質問に対応していく感じなので即座に返信っていう感じではありません。しかし、どんな簡単な内容でも必ず返信していただけて親切に答えてくれます。(恐縮な質問を何回もしました)　受講中は様々なエラーに直面します。そんな中とっても頼りになるのが講師の方々です。こういったスクールでは1番肝心な部分かもしれませんね。