pybrainでマッチ箱をやってみる

ビッグデータ関連で人工知能に興味を持ったので読んでみた。

マッチ箱の脳(AI)―使える人工知能のお話

マッチ箱の脳(AI)―使える人工知能のお話

遠足のお菓子問題をpybrainで解いてみた。

#!/usr/bin/python
# -*- coding: utf-8 -*-

from pybrain.datasets import SupervisedDataSet
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised import BackpropTrainer

# machi bako no nn

NN = buildNetwork(3, 1)
#buildNetwork(入力層, 出力層)

DataSet = SupervisedDataSet(3, 1)
#SupervisedDataSet(入力データ, 出力データ)
DataSet.addSample( (1, 1, 1), (0)) #ngの買い方
DataSet.addSample( (1, 1, 0), (0)) #ngの買い方
DataSet.addSample( (1, 0, 1), (1)) #okの買い方
DataSet.addSample( (0, 1, 1), (1)) #okの買い方
DataSet.addSample( (1, 0, 0), (1)) #okの買い方

trainer = BackpropTrainer(NN, DataSet, verbose = True)
for i in range(0,100):
trainer.train()

TestSet = SupervisedDataSet(3, 1)
TestSet.addSample( (0, 1, 0),(1)) #okの買い方、合ってる
TestSet.addSample( (0, 0, 1),(1)) #okの買い方、合ってる
TestSet.addSample( (0, 0, 0),(1)) #okの買い方、合ってる

trainer.testOnData(TestSet, verbose = True)

テスト部分の出力

Testing on data:
('out: ', '[-0.146]')
('correct:', '[1 ]')
error: 0.65715369
('out: ', '[0.909 ]')
('correct:', '[1 ]')
error: 0.00411796
('out: ', '[0.359 ]')
('correct:', '[1 ]')

うーむ、、、、あんまり合ってないってことかな。

学習を6パターン、1000回にするとほぼoutは0.5か1.5になる、、、、(1か0に近づかなければいけないのに?)

Testing on data:
('out: ', '[0.5 ]')
('correct:', '[1 ]')
error: 0.12476625
('out: ', '[1.501 ]')
('correct:', '[1 ]')
error: 0.12546397
('All errors:', [0.12476624828904992, 0.1254639688456621])
('Average error:', 0.12511510856735603)
('Max error:', 0.1254639688456621, 'Median error:', 0.1254639688456621)