【Deep Learning】Chainerを使ったニューラルネットワークを再勉強
はじめに
これから私が事業を考えていくうえで欠かせない技術が
Deep Learningをはじめとした機械学習です。
これまでは画像認識の分野でCNNを用いた画像の識別を勉強してきましたが、
CNNではなくRNNのほうが、私が考えている事業で利用することになります。
そこで、RNNを理解するにあたって、
Deep Learningを改めて勉強していこうという考えに至っています。
#フレームワークとしてChainerを使用しています。
qstairs.hatenablog.com
処理
今回はscikit-learnを使ってIris(アヤメ)データをダウンロードし、
ニューラルネットワークを構築して学習・評価します。
Iris(アヤメ)データは、
花びらの長さ、幅、がく片の長さ、幅の4次元データに対して、
アヤメの種類であるsetosa(0),versicolor(1),virginica(2)の3種類が割り当てられています。
データは全部で150個あり、
今回は学習に半分、評価に半分使用しています。
#!/usr/bin/env python # -*- coding: utf-8 -*- from chainer import cuda, Function, FunctionSet, gradient_check, Variable, optimizers, serializers from chainer.training import extensions import chainer.functions as F import chainer.links as L from sklearn import datasets import numpy as np import os class IrisChain(): cuda.get_device(0).use() def __init__(self): self.model = FunctionSet( l1 = L.Linear(4,6), l2 = L.Linear(6,3), ).to_gpu() def __call__(self, x, y, train=True): h1 = F.sigmoid(self.model.l1(x)) h2 = self.model.l2(h1) if train == True: return F.mean_squared_error(h2, y) else: return h2 cuda.get_device(0).use() # iris=[花びらの長さ、幅、がく片の長さ、幅]→[setosa(0),versicolor(1),virginica(2)] # データ数:150個 iris = datasets.load_iris() X = iris.data.astype(np.float32) Y = iris.target N = Y.size Y2 = np.zeros(3 * N).reshape(N, 3).astype(np.float32) for i in range(N): Y2[i, Y[i]] = 1.0 index = np.arange(N) # 奇数番目のデータを学習データにする xtrain = X[index[index % 2 != 0],:] ytrain = Y2[index[index % 2 != 0],:] # 偶数番目のデータを学習データにする xtest = X[index[index % 2 == 0],:] yans = Y[index[index % 2 == 0]] print N model = IrisChain() optimizer = optimizers.SGD() optimizer.setup(model.model) f = open("loss.csv","w") for i in range(50000): x = Variable(cuda.to_gpu(xtrain)) y = Variable(cuda.to_gpu(ytrain)) model.model.zerograds() loss = model(x,y) loss.backward() optimizer.update() print "%d: %f"%(i, loss.data) f.write("%d,%f\n"%(i, loss.data)) f.close() xt = Variable(cuda.to_gpu(xtest), volatile='on') yt = yans result = model(xt, yt, train=False) nrow, ncol = result.data.shape print nrow correct = 0 for j in range(nrow): c = np.argmax(result.data[j,:]) if c == yans[j]: correct += 1 print "%d / %d = %f"%(correct, nrow, float(correct)/float(nrow))
結果
繰り返し学習回数を50,000回で学習し、
そのときの損失の傾向をグラフにしました。
0.019あたりで収束しているようです。
また、正解率は、96%となっています。
72 / 75 = 0.960000
最後に
基本のキホン的な感じでニューラルネットワークを構築し、
実際に学習して評価しました。
これから、さらに複雑な処理を勉強していきます。
こちらの書籍を参考にしています。
www.amazon.co.jp
Deep Learningに関する過去の記事
【AI】人間が人工知能に生かされるようになる日は近い!?
声のトーンや生活パターン、ソーシャルメディアへの投稿といった膨大なデータを収集、人工知能(AI)で解析することで、自殺を未然に防ぐための取り組みが始まっている。自分でも気づかなかった自分の精神状態を、AIが教えてくれる未来が訪れるかもしれない。
上記の記事では自殺防止のための人工知能ということで、
現在、取り組みが進められているサービスについて紹介されています。
また、記事の最後ではウェアラブル端末による人工知能の発展にも少し言及しています。
そこで今回はウェアラブル端末による人工知能の発展について
ちょっと考えてみました。
ウェアラブル端末による人工知能の発展
Apple Watchをはじめとしたウェアラブル端末が今後増えていくといわれています。
ウェアラブル端末では、
- 心拍数
- 睡眠時間
- 歩数
を主に測定でき、
これらによってどのように生活しているかが数値化されることになります。
このように数値(データ)化されるのであれば、
あとは機械学習(≒人工知能)の出番です。
日頃のユーザに関するデータをサーバが蓄積し学習することで、
ユーザの平常時とそれ以外について(もっと細かいところまで)
は識別できるようになるでしょう。
そうなるとどうなるか。
ユーザがいつもと違うことをすると人工知能が
「どうしたの?どこか悪いの?」
と警告を出すことになります。
また、不摂生が続くと
「規則正しく生活しなさい!」
と口うるさく言ってくることになるでしょう。
何だか母親のようですね。(^_^;
人工知能に言われたとおりに
いつも同じことを行い、規則正しい生活を送る。
寿命が延びることにはなりますが、
何だか人工知能に生かされているような気もするような...
【奮闘記】フリーランス開始!!
今月からフリーランスになりました。
#といってもまだ開業届を出せていない状況...(-_-;)
フリーランスといえば、
自分で営業活動して仕事を取ってくるイメージがありますが、
私の場合はエージェントさんに仕事を持ってきてもらいました。
エージェントに仕事をもらう場合の流れについては、こちらをご参考ください。
私がフリーランスになった理由は起業するためなので、
徐々に自分で仕事を取って来れるようにしないといけません。
仕事というか事業を作っていかないといけません。
今のところざっくりとしたアイデアしかないので、
これから詰めていくことになりますが、
一人で考え込んでいてもいいアイデアは浮かんでこないので、
色々な人に出会う機会を増やしていこうと考えています!
以上。
【奮闘記】本日退職!!
本日、4年間勤めた会社を退職しました。
今日まで引き継ぎを進めていたにもかかわらず、
最終日にドタバタしてしまうという現状...
引き継ぎの難しさを実感しました。(^_^;)
引き継ぎは終わり、
これまでお世話になった方々に挨拶まわり。
みなさんからは
「残念」
と言われましたが、続けて
「頑張って!」
と応援する言葉をいただきとても嬉しく思いました。
今日で会社員が終わり、
明日からはフリーランスとなります。
不安もありますが、
それ以上にワクワクが大きくこれからが楽しみです。
これまでできなかった活動をどんどん進めていきたいです!!
【画像認識】駅構内の自分の位置を画像から特定!
東京地下鉄株式会社(東京メトロ)と日本電信電話株式会社(NTT)が3月26日まで、東京メトロ表参道駅構内にて、駅構内ナビゲーションサービスと広告サービスの実証実験を実施している。
屋外ではGPSによる目的地の案内が普及していますが、
屋内はGPSによる正確な位置を取得することができないという問題がありました。
これまでWi-Fiを利用した位置測定などが活用されてきましたが、
今回の画像認識による位置測定は新たな手法です。
今回、画像認識の撮影対象は「i」マークの付いた案内板と限られていますが、
比較的見つけやすい対象だとは思うので活用できそうです。
また、案内が2.5次元で立体的に確認できるのは良さそうです!
どこにどの店があるのか掴みにくい大型商業施設でも
同じようなサービスがほしいところです。
【画像認識・AI】お店のショッピングカートにも人工知能!?
Automagiは、ディープラーニング(深層学習技術)を用いた画像認識技術を中心に、独自のAI技術(http://www.amy-ai.com/)をロボットコンシェルジュカートに提供を行います。消費者がロボットコンシェルジュカートの買い物かごに野菜や飲料などの商品を入れると、AIロボットが商品の画像を自動で解析し、オススメの食べ方や食べ合わせのよい他の商品を音声で教えてくれ、お客様のショッピングを楽しくアシストしてくれる機能を実現しています。
買い物かごに商品を入れたらオススメの食べ方を教えてくれるらしいんですが、
かごに入れる商品って
ある程度料理を想定したあとに入れるんじゃないの?
テキトーに手にとってかごには入れないような気がします...(^_^;