世界的エンジニアの中島聡さんがお送りするメルマガ『週刊 Life is beautiful』。今回は、日本のエンジニアが農家を営む両親がいつも苦労している「きゅうりの仕分け」を何とか手助けしようと、Deep Learningを活用して「きゅうりの自動仕分け」をする装置を作ったという、ちょっと心がほっこりするお話です。この装置、上手くきゅうりを仕分けることはできたのでしょうか?
私の目に止まった記事
●How a Japanese cucumber farmer is using deep learning and TensorFlow
自動車メーカーに勤める日本のエンジニアが、農家を営む両親のために Deep Learning を活用して、「きゅうりの自動仕分け」をする装置を作った、という話です。
彼の実家で作っているきゅうりは、太さ、曲りぐあい、色、つやなどで市場での価値が大きく違うため、「仕分け」をしてから出荷する必要があります。しかし、「仕分け」には熟練した目が必要なため、パートの人を雇うわけにもいかず、毎年出荷のピークになると、「仕分け」だけのために毎日8時間も費やす日もざらではないそうです。
そこで、Google が去年オープンソースにしたばかりの TensorFlow を使って「自動仕分け」が出来ないかと開発をしたそうです。
ちなみに、一番の問題はトレーニングデータの数だそうです。彼の母親が仕分けた7000本のきゅうりの写真を撮影し、それをトレーニングデータとして使ったそうですが、データの数が不十分で、まだ精度は70%ぐらいだそうです。
記事中には「overfitting が起こったらしい」と書いてありますが、これは Deep Learning を活用する際には良く起こる現象なので、知識として覚えておくと良いと思います。
overfitting とは、(Deep Learning を適用する際に構築する)ニューラルネットワークの複雑さよりもサンプル数が少ないと、たまたまサンプルの中に存在した本質的でない特徴を判断基準に使うモデルが作られてしまうことです。
例えば、偶然にも「ランクが一番低い」と判断されたきゅうりの8割に「ちょうど頂点から3センチのところに棘がある」という特徴があった場合、その特徴をランクの低さと結びつけられるモデルが作られてしまい、人間であればトップランクと格付けするだろう質の高いきゅうりを、たまたま「頂点から3センチのところに棘がある」を理由に、低くランク付けしてしまうようなケースです。
人間であれば(もしくは人間が作ったアルゴリズムであれば)、太さが均一、まっすぐ、色が緑、ツヤが良いなどの「判断基準」を定めた上で、ランク付けをしますが、Deep Learning の場合、単にサンプルデータとその結果だけから判断基準のためのモデル(ニューラルネットワーク上の重み付けパラメータの集まり)を作り出すため、「ちょうど頂点から3センチのところに棘がある」ような人間だったら決して判断基準にしないような特徴を重視してしまうケースがあるのです。
データの量が十分に多ければ、その手の「本質的ではない」データは平均化されて消えてしまうのですが、データの量が(ネットワークの複雑さに対して)不十分だと、その手の「たまたまサンプルの中にあったデータ」に惑わされてしまい、それに合わせたパラメータをこしらえてしまうことがあり、それを Overfitting と呼ぶのです。
image by: Shutterstock
著者/中島聡(ブロガー/起業家/ソフトウェア・エンジニア)
マイクロソフト本社勤務後、ソフトウェアベンチャーUIEvolution Inc.を米国シアトルで起業。IT業界から日本の原発問題まで、感情論を排した冷静な筆致で綴られるメルマガは必読。