先日、理容院で髪を切ってもらっている時、
ふと、鏡の中に写った、店員さんの名札を目にしました。
当然、鏡の中なので、文字が左右反転しているのですが、
頑張れば読めるだとうと思って、名札を凝視しました。
ところが、どれだけ見ても文字を読むことはできません。
左右入れ替わるだけでこんなにも
文字が読めなくなるものなのかと驚きました。
そこで、思ったのが、
鏡文字を読めないのは自分だけなんだろうか。
ということです。
誰が読んでも難しいのでしょうか。
ちょっと、調べてみると、
子供は左右逆に字を書いてしまうことがあるということがわかります。
子供はむしろ逆に覚えていることもあるわけですね。
それでは、AIはどうでしょうか。
ということで、AIに鏡文字を読ませてみましょう。
初めて鏡文字を見せた場合
まずは、鏡文字を見たことのないAIに対して、
鏡文字を見せて、それが読めるのかどうか試してみましょう。
方法
AI として、単純な畳み込みニューラルネットワークを使って、
MNISTの0〜9の数字の画像を覚えさせます。
その後、0〜9の数字の左右を反転した画像を見せて、
それぞれがどの数字かを当てさせます。
学習結果
0〜9の反転していない画像を合計6万枚見せて、
ニューラルネットワークの学習をさせました。
下のグラフは、学習による損失関数と精度を示しています。
順調に学習できていて、最終的には、
98%〜99%程度の精度で数字の識別ができていることが分かります。
鏡文字の正答率
さて、学習を終えたAIに、
左右反転の数字画像を見せて数字を答えさせるとどうなるでしょう。
結果は、正答率が、
8.89 %
と、かなり読めてないことが分かります。
全部で10個の数字なので、デタラメに言っても10%程度で当たることを考えると、
ほぼデタラメに答えているのと同じだと言えますね。
AIは学習したことはそれなりにやってくれますが、
見たことない文字を判別しろと言われても無理なのは当然ですね。
例えば、下のような2を反転した画像を見せると、
判定は6と返ってきます。
流石にこれは人だと読めます(?)ね。
数字という情報がないと難しいかもしれませんが。。。
間違えやすい数字
全体として正答率は8.89%でしたが、
中には読みやすい数字と読みにくい数字もあるかもしれません。
ということで、数字ごとの正誤をグラフにしてみました。
8はほぼ正解していますね。
左右対象なので、反転してもほぼ形が変わらないためだと考えられます。
ところが、同じように、左右対称の「0」や「1」の正答率はあまり高くありません。
これは、手書きの「0」や「1」が傾く傾向にあるからだと考えられます。
「1」は「/」のように右に倒して書くことが多いですが、
これを反転すると「\」左に倒れた縦棒になるので、
AIがこれを違うものとして判断してしまったのでしょう。
左右反転も学習した場合
上では、学習データの中に左右反転したデータを含めていないので、
初めて鏡文字を見たAIが当てずっぽうで答えたような結果になっていました。
それでは、AIに鏡文字も一緒に見せて学習するとどうなるでしょうか。
つまり、「/」も「\」も共に「1」だと教えて鏡文字を読ませて見るとどうなるでしょうか。
学習結果
鏡文字を一緒に学習しても、
学習はうまく進んでいるようです。
鏡文字の正答率
学習ができてしまったということは、
当然、鏡文字を正しく学習したということです。
鏡文字を見せて見ると、その正答率は、
98.1%
でした。
学習時に見せたか見せていないかで全然違いますね。
数字毎で正答率を見ても、
下のグラフの通り、どの数字もほぼ読むことができています。
まとめ
鏡文字をAIに読ませてみました。
結果は、慣れていれば読めるけど、
慣れていないと全然読めないということですね。
私もAIのように鏡文字は慣れてないので全然読めません。。。