ソフトウェア

2つにグループ分けされた模様から分類ルールを推測する「ボンガードパズル」をディープラーニングで解く


ボンガードパズルと呼ばれるパズルを解くプログラムをディープラーニングを使って作成する過程がブログで公開されていました。

Solving Bongard Problems With Deep Learning | Sergii Kharagorgiev
https://k10v.github.io/2018/02/25/Solving-Bongard-problems-with-deep-learning/#perfundo-untarget

ボンガードパズルは、以下のように6枚ずつ左右に分けられた模様を観察することで左右のグループの分類に用いられたルールを推測するパズルです。例えば下の画像では、左は「三角形」、右は「四角形」というグループに分けられていることがわかります。


例題としてもうひとつ。左の6つと右の6つを分けている要素は何かというと……


答えは「左の図形は凸多角形だが右は凸ではない」というものでした。こうしたボンガードパズルを解いてくれるプログラムをディープラーニングを用いて作る過程が公開されています。上の2枚は少し考えるだけで答えが分かる難易度でしたが、下の画像のようにもっと難しい問題もあります。

・問1 ここをクリックすると正解を表示します


・問2 ここをクリックすると正解を表示します


・問3 ここをクリックすると正解を表示します


・問4 ここをクリックすると正解を表示します


このエントリを公開したSergii Kharagorgiev氏によると、この問題を解くに当たって少なくとも2つの大きな問題があるとのこと。それは「ディープラーニングに用いる学習用の画像が6枚ずつの計12枚しかない」という問題と、「入力は画像だが出力は分類基準を自然言語で記述する必要がある」という問題です。

そこで、自然言語で解答する問題を分類問題に単純化します。もともとは6枚ずつだった画像のうち5枚ずつの計10枚をトレーニングに使用し、残りの2枚の画像を「もともと左右どちらにあったのか」という情報なしで正しく分類するという分類問題に変化させます。こうすることで、自然言語での解答を避けることができます。


そして実際に解くにあたり、ほかのデータで学習して得られたパラメーターを再利用する「転移学習」を利用したとのこと。また、ボンガードパズルの画像はニューラルネットワークの学習に使用するには少なすぎるので、新しいデータセットを作成する必要があります。

Kharagorgiev氏は、ボンガードパズルに登場する図形に似た画像を生成し、特徴量を抽出するニューラルネットワークの事前学習に用いたとのこと。生成した画像は基本的な幾何図形で、下の画像のようなもの。合計で100万枚の画像を生成して学習したそうです。


肝心のニューラルネットワークには「Darknet Reference」モデルを編集して使用したとのこと。9つの畳み込みレイヤーを使用しています。


実際にボンガードパズルがまとまっているページにある232個の問題を解いてみると、「テスト」画像をきちんと左右に分けられたものが47個あり、そのうち41個が正しく分類できていたとのこと。以下の画像で緑の部分が正解した問題、赤の部分が間違ってしまった問題を示しています。白の部分は、テスト画像を2つとも左側または右側に分類してしまい、解答できなかった問題です。


Kharagorgiev氏は、シンプルな既成のディープラーニングの手法がボンガードパズルを解くのに使えることがわかったと述べた上で、今回のような「分類」ではなく本来の「言語による説明」を行うためには自然言語の処理が難しく、ボンガードパズルができて50年たった今でも挑戦しがいのある機械学習のベンチマークだと結論付けています。

この記事のタイトルとURLをコピーする

・関連記事
無料で全39種類がプレイし放題のWindows/Mac/Unixで動くパズルゲーム集「Simon Tatham’s Portable Puzzle Collection」 - GIGAZINE

コンピューターが人間を超える「AI」「ディープラーニング」「機械学習」とは何かについて解説する「Machine Learning 101」 - GIGAZINE

ディープラーニングを用いてAIに「皮肉」を理解させるという研究 - GIGAZINE

スマホで撮影するだけでディープラーニングのAIがフォント名を教えてくる無料アプリ「WhatTheFont」 - GIGAZINE

「ディープラーニングとは何か?」を初心者でも分かりやすく実例を含めて解説するムービー「Introduction to Deep Learning: What Is Deep Learning?」 - GIGAZINE

in ソフトウェア, Posted by log1d_ts

You can read the machine translated English article here.