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

データ・サイエンティストは可視化の夢を見るか?

Does Data Scientist Dream of Visualization?

機械学習への一里塚

Data Science MOOCs

“Data Science from Scratch”、第 18 章 “Neural Network” まで写経が進みました。

Data Science from Scratch

Data Science from Scratch

同書でのニューラル・ネットワークの例題は『文字認識』です。
(訓練データとして)0 から 9 までの算用数字を 5 × 5 マスで表現してから、ニューラル・ネットワークにくり返し学習させてから、ちょっとあいまいな試験データ(同様に 5 × 5 マス)を与えて正解できるかどうか試してみました。
ところが main 関数の写経に一部間違いがあったようで、きちんと動きません。
でも、どうしても間違えた箇所が分かりません。そこで diff を取れば良かったのですが、ここでは配布されている元々のサンプル・コードをコピーしてきて対処しました。

先ず、学習結果を示します。
左にあるのが学習させたい算用数字、カッコのなかが学習による推定の確率です(0 から 9 の算用数字に対応したヴェクトルになっています)。1 に近いほど、そこに対応した算用数字であるはずだ、という話です。

0 [0.96, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.03, 0.0]
1 [0.0, 0.96, 0.03, 0.02, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
2 [0.0, 0.02, 0.96, 0.0, 0.0, 0.03, 0.0, 0.0, 0.0, 0.0]
3 [0.0, 0.03, 0.0, 0.97, 0.0, 0.0, 0.0, 0.02, 0.0, 0.03]
4 [0.0, 0.02, 0.0, 0.0, 0.98, 0.0, 0.0, 0.01, 0.0, 0.0]
5 [0.0, 0.0, 0.02, 0.0, 0.0, 0.96, 0.01, 0.0, 0.02, 0.02]
6 [0.0, 0.0, 0.01, 0.0, 0.01, 0.02, 0.99, 0.0, 0.01, 0.0]
7 [0.03, 0.0, 0.0, 0.02, 0.0, 0.0, 0.0, 0.97, 0.0, 0.0]
8 [0.03, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.96, 0.03]
9 [0.0, 0.0, 0.0, 0.01, 0.0, 0.02, 0.0, 0.0, 0.02, 0.96]

此の学習結果を、以下のようにちょっとあいまいな数字イメージに対してテストしてみました。

.@@@.
...@@
..@@.
...@@
.@@@.
[0.0, 0.0, 0.0, 0.93, 0.0, 0.0, 0.0, 0.01, 0.0, 0.1]
.@@@.
@..@@
.@@@.
@..@@
.@@@.
[0.0, 0.0, 0.0, 0.0, 0.0, 0.54, 0.0, 0.0, 0.91, 1.0]

興味深いのは後者のテスト(3 なんだか 8 なんだか 9 なんだか分からないイメージ)について、わたしには 8 に見えるんですが、此の NN ではむしろ 9、次善の候補として 8 という結果が出ているところです。此の辺は「教師」が修正して覚え込ませていく必要もあるかも知れませんが、もともとあいまいなことも多い手書き数字を認識させたと考えると、十分な妥当性を持って第 3 候補まで計算できているように見えます。


Rによるデータサイエンス-データ解析の基礎から最新手法まで

Rによるデータサイエンス-データ解析の基礎から最新手法まで

こちらの本では R の nnet ライブラリを使って NN の例題を解いています。データ・セットは(有名な)iris です。

放送大学『データの分析と知識発見('16)』を見たのでそこから若干注意点を補足しておきます。NN にできることは『ルールの抽出』です。つまり例外的ルールを発見するのはきわめて困難なはずです。あと、学習精度を上げようとして設定をいじり却って『過学習』に陥る危険もあります。

こういったことに留意したうえで NN を使っていこうと考えています。