読者です 読者をやめる 読者になる 読者になる

Qstairs

起業に向けた活動、およびAndroid・画像認識(人工知能、Deep Learning等)の技術を紹介します

広告

【IT】コンビニの全商品に電子タグが!

IT

f:id:qstairs:20170418201055j:plain

経産省は「コンビニ電子タグ1000億枚宣言」を策定。2025年までに、コンビニ大手5社の全商品、年間約1000億個に電子タグを取り付けるという。


www.itmedia.co.jp


この電子タグは購入した後も商品に取り付けたままなのでしょうか?


仮にそうだった場合、
今のところ消費者が商品を買ったあとでも
この電子タグを使用してさらに面白いことができそうですね!


例えば、ごみ箱でこの電子タグの読み取ることで、
商品の実際の消費地域が見える化され、商品開発や出店場所の選定に活かされます。
#ちょっと無理矢理ですね(^_^;

他にはスマホで読み取って摂取カロリーの計算とか。
#これは良さそうですね!

新しいビジネスが生まれそうです!

関連記事

qstairs.hatenablog.com

【Rails】Ruby on Rails始めました

IT フリーランス Ruby on Rails

f:id:qstairs:20160601221351j:plain

はじめに

現在のITサービスにおいて、
Webサービスは切っても切れないものになっています。
そんな中で事業を作っていく身としてはWebサービスはできませんでは話になりません。
ということで、Webアプリの開発が容易だという「Ruby on Rails」の勉強を始めました。

今回やったことは以下の2点になります。

  • 環境構築
  • 簡単なRailsアプリの作成

#環境はMac OSです。

環境構築

私は以下のサイトを参考にしました。
最初は他のサイトを参考にしていましたが途中うまくいかず、
以下のサイトに行き着きました。
【El Capitan】Mac OSX 10.11 El Capitan にRuby + Rails4 開発環境の構築 【初心者必見】 - Qiita

簡単なRailsアプリの作成

環境構築まで完了した後、以下のサイトを参考に簡単なRailsアプリを作成しました。
タイトルにあるように、「小学生でもわかる」ということで
どんなものかと思い選んでみたところ、
とてもわかりやすかったです。

小学生でもわかるRuby on Rails入門 | OpenBook

ただ、ITリテラシーが低い方にとってはちょっと難しいかなと思います。(^_^;
ただ、行き詰まった際には関連するサイトを探して解決していけば問題ないかと思います。

最後に

今回はRuby on Railsの環境構築と簡単なRailsアプリの作成を行いました。
感想としては、「これは便利!!」の一言です。
というのも、画面と処理とDBが同じ環境内に収まっているので、
そういった各モジュールとの連携で悩む必要がありません。

今後はスマートフォンのアプリとの連携を含めた
Webサービスの開発まで検討していこうかと考えています。

【Deep Learning】NNの重みは学習の度に異なり、初期値から大きく変化しない

AI (人工知能) Chainer Deep Learning(ディープラーニング) IT python

f:id:qstairs:20160601221351j:plain

はじめに

NNを学習する際に
まずは各重みに初期値が割り当てられる。

そして、NNの学習はこの初期値の重みを変えながら進んでいくことになる。

つまり、初期値が大事になる。

そこで、今回は

  • 初期値が学習のたびにどれだけ異なるのか
  • 繰り返し学習によってどれほど初期値が変化するのか

について評価する。

また、今回は評価するために重みを色で表現した。


例:
左の〇4つが入力層、真ん中の〇6つが中間層、右の〇3つが出力層となっている。
重みは各〇をつないでいる線の色で表す。
より赤ければ重みが大きく、黒ければ小さい。


f:id:qstairs:20170412214241p:plain

実験内容

この前の記事に書いたIris(アヤメ)の識別に構築した学習モデルを使用し、
繰り返し学習回数(epoch)を5,000で4回学習した。

各学習で得られた重みを色で表現した画像を出力した。

初期値が学習のたびにどれだけ異なるのか

下の画像が各学習での初期値になる。
ぱっと見はわかりにくいが、よく見ると結構異なっている。


f:id:qstairs:20170412215324p:plain

繰り返し学習によってどれほど初期値が変化するのか

以下に初期値と繰り返し学習回数を5,000回行ったときの画像を列挙した。
大きな変化がないことが分かる。

学習①
f:id:qstairs:20170412215947p:plain:h300
学習②
f:id:qstairs:20170412215959p:plain:h300
学習③
f:id:qstairs:20170412220008p:plain:h300
学習④
f:id:qstairs:20170412220019p:plain:h300


学習①の重みの移り変わりの動画
youtu.be


まとめ

今回は学習するNNモデルの重みについて、について、
学習による割り当てられる重みの初期値の差異と
繰り返し学習による重み変化を評価した。

結果として、
学習による割り当てられる重みの初期値の差異は大きく、
繰り返し学習による重みの変化は小さいことが分かった。

これらから、NNモデルの学習では重みの初期値が重要になることが分かる。

よって、
構築した学習モデルの評価を行う際は、
構築した学習モデルに対して学習を複数回行い、
各学習モデルの平均等を出すべきである。


注意事項

今回の評価ではDeep LearningのフレームワークであるChainerを使用しており、
他のフレームワークでは同様の結果が出ない可能性があります。

関連記事

qstairs.hatenablog.com

【Deep Learning】Chainerを使ったニューラルネットワークを再勉強

AI (人工知能) Deep Learning(ディープラーニング) Chainer IT python フリーランス

f:id:qstairs:20160601221351j:plain

はじめに

これから私が事業を考えていくうえで欠かせない技術が
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に関する過去の記事

qstairs.hatenablog.com
qstairs.hatenablog.com

【奮闘記】開業届&青色申告申請書提出

IT フリーランス 奮闘記 確定申告

f:id:qstairs:20170209000813j:plain

昨日の朝、開業届と青色申告の申請書を税務署に提出してきました!
#いろんなサイトにもありましたが、
#税務署への提出は本当にあっけない感じで驚きました(^_^;

屋号はブログ名と同じ
Qstairs
としました。

これでようやく、
事業用の口座とクレジットカードを作れるようになるので、
活動の幅が広がります。

そんなこんなで
ようやくフリーランスがスタート!

【AI】人間が人工知能に生かされるようになる日は近い!?

AI (人工知能) IT Deep Learning(ディープラーニング)

f:id:qstairs:20160628223434j:plain

声のトーンや生活パターン、ソーシャルメディアへの投稿といった膨大なデータを収集、人工知能(AI)で解析することで、自殺を未然に防ぐための取り組みが始まっている。自分でも気づかなかった自分の精神状態を、AIが教えてくれる未来が訪れるかもしれない。

www.sankei.com


上記の記事では自殺防止のための人工知能ということで、
現在、取り組みが進められているサービスについて紹介されています。

また、記事の最後ではウェアラブル端末による人工知能の発展にも少し言及しています。

そこで今回はウェアラブル端末による人工知能の発展について
ちょっと考えてみました。

ウェアラブル端末による人工知能の発展

Apple Watchをはじめとしたウェアラブル端末が今後増えていくといわれています。

ウェアラブル端末では、

  • 心拍数
  • 睡眠時間
  • 歩数

を主に測定でき、
これらによってどのように生活しているかが数値化されることになります。


このように数値(データ)化されるのであれば、
あとは機械学習(≒人工知能)の出番です。


日頃のユーザに関するデータをサーバが蓄積し学習することで、
ユーザの平常時とそれ以外について(もっと細かいところまで)
は識別できるようになるでしょう。


そうなるとどうなるか。


ユーザがいつもと違うことをすると人工知能
「どうしたの?どこか悪いの?」
と警告を出すことになります。


また、不摂生が続くと
「規則正しく生活しなさい!」
と口うるさく言ってくることになるでしょう。


何だか母親のようですね。(^_^;



人工知能に言われたとおりに
いつも同じことを行い、規則正しい生活を送る。


寿命が延びることにはなりますが、
何だか人工知能に生かされているような気もするような...

【奮闘記】フリーランス開始!!

IT 奮闘記 フリーランス

f:id:qstairs:20170209000813j:plain

今月からフリーランスになりました。
#といってもまだ開業届を出せていない状況...(-_-;)


フリーランスといえば、
自分で営業活動して仕事を取ってくるイメージがありますが、
私の場合はエージェントさんに仕事を持ってきてもらいました。

エージェントに仕事をもらう場合の流れについては、こちらをご参考ください。


私がフリーランスになった理由は起業するためなので、
徐々に自分で仕事を取って来れるようにしないといけません。
仕事というか事業を作っていかないといけません。

今のところざっくりとしたアイデアしかないので、
これから詰めていくことになりますが、
一人で考え込んでいてもいいアイデアは浮かんでこないので、
色々な人に出会う機会を増やしていこうと考えています!


以上。

広告