機械学習初学者のための教育支援ソフトウェアの初期開発
1. はじめに
人工知能という言葉の概念は1956年に登場し、近年爆発的に成長している分野である。特に、2015年以降、迅速で強力な並列処理性能を提供するGPUの導入からさらに成長が速まってきている。続々と爆発的に増えているストレージとイメージ、テキスト、マッピングデータなど、すべての領域のデータが氾濫した「ビッグデータ」時代の到来もこういった成長の勢いに影響を及ぼしたと言えている。
2. 背景
機械学習とは人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術のことである。その機械学習を勉強する際には、前処理された学習用データセット、基本又は上級のアルゴリズムなどが必要であり、教育用として一般公開されていることが多い。このような数多くのライブラリーなどを利用するためには、ある程度のプログラミング能力と数学的な能力、そして使用するデータを分析できる能力が必要であり、それらを備えてられていなければ、優れていない学習能力を持つモデルとなることもある。加えて、数多くのライブラリーの更新頻度も頻繁であり、各ライブラリーの実装環境もそれぞれ異なり、機械学習を勉強する際には様々な知識や環境が要求される。
3. 目的
本プロジェクトは、機械学習を初めて勉強する初学者のために、便利に学習可能なプラットフォームを開発することを目的とする。より具体的には、機械学習を勉強するための環境を構築せず、与えられたデータセットを分析することで的確な機械学習モデルを選択し、関連知識が備えられていなくても機械学習を動かせるプラットフォームを開発することである。
4. 手法
4.1 使用するプログラミング言語とライブラリー
・Python (3.6.5)
Python環境であれば機械学習ライブラリーの選択範囲も広く、内部コードの修正を容易にするため、Python3を使い開発した。
・PyQt5 (5.10.1)
機械学習の仕組みや作動が目に見えるようにするため、GUIプログラミングツールキットであるPyQtを用いて開発した。一般的に機械学習に用いられるデータセットはテーブル形式(Excelなど)となっていることが多く、その中身まで確認ができるGUIプラットフォームとなるようにPyQtを用いた。
・Scikit-Learn (0.19.1)
Scikit-Learnというのは、Python環境で機械学習として有名なライブラリーである。教育用としてのデータセットやモデル、アルゴリズムが搭載されているライブラリーであり、オープンソースとして使用できる。その他にKerasという深層学習ライブラリーも機械学習の教育用として公開されているが、GUIとして実装するのに難しいところがあり、本プロジェクトでは扱っていない。
・PyCharm
PyCharmはPythonの開発環境(IDE、Integrated Development Environment)である。PyQtとの連携が良く、直感的なUIを提供するなど、本プロジェクトの開発に的確だと思われたため用いた。
4.2 開発の流れ
① ソフトウェア開発
② Scikit-Learnで提供しているデータセットを用いて検証
Scikit-Learnで提供している様々なデータセットの中でいくつかを用いて本プロジェクトで開発したソフトウェアを検証してみる。データセットを分析するモデルはScikit-Learnで提供しているモデルを用いることにする。
③ Scikit-Learnで提供していないデータセットを用いて検証
Scikit-Learnで提供していない外部のデータセットの中でいくつかを用いて本プロジェクトで開発したソフトウェアを検証してみる。データセットを分析するモデルはScikit-Learnで提供しているモデルを用いることにする。
④ 機械学習環境が構築されていない他環境での実装
本プロジェクトの目的であった環境を構築せずに機械学習を回せるプラットフォームとなっているかを検証する
5. 結果
以下の図 1は開発したソフトウェアの初期画面である。
まず、用いられたライブラリー(Scikit-Learn)で提供しているデータセットを用いて実装をしてみた。使用したデータセットは「iris_dataset」、「boston_dataset」である。ライブラリーデータを用いたため、データセットの説明の読み込みおよび、データの分布図の作成が可能となる機能の実装に成功した。実装画面を下の図 2に示す。
ライブラリーに入っている学習モデルを使った学習を行い、モデルそれぞれの正確度が出るような機能もうまく動いた。プロジェクト企画当初には計画していなかった「AutoML」というモデル自動選別アルゴリズムの実装にも成功し、そのモデルを保存して呼び込む機能の実装にも成功した。その実装画面を下の図 3に示す。
その後、ライブラリーに入っていない公開されている外部のデータセットを抽出し、開発したソフトウェアで動かしてみた。使用したデータセットは「Titanic生存予測データセット」である。ライブラリーに入っているデータセットでの実装と同様に実装に成功した。その実装画面を下の図 4と図 5に示す。
最後に、本プロジェクトの開発環境だったノートパソコン(Macbook Pro)でない環境でソフトウェアを実装してみた。使用したOSはWindowsとMac環境であったが、Windowsでの実装は失敗となり、Macでの実装は部分的に成功した。
6. 考察
本プロジェクトの目的の一つであった「環境が構築されていない環境での機械学習」は部分的に失敗となった。プロジェクトの開発した環境はMacで、試しはWindowsとMac両方で行われたが、Windowsでは学習途中でエラーが出るなど、いくつかの問題点が発生した。その原因としては、OSが基本的に提供する環境が異なるためだと思われる。そして本プロジェクトを開発する際に作成したコードにより、多様なAPIが混ざっている構造となっていたことも失敗の原因として挙げられる。その他のライブラリー内部データセットとライブラリー外部データセットを用いた実装には成功し、モデルの読み込みと保存機能を正常に動いていることを確認した。今回のプロジェクトは、既存の機械学習における複雑なコードを作成することなどの大変さから、より簡単で気軽に機械学習を触ることができるソフトウェアの開発したことに意義があると思われる。
7. まとめ
FTMPの発表後に頂いたコメントでは、「本当に機械学習を勉強したいのであれば、このようなソフトウェアを利用するより、複雑なコードを作成してみること、そして数学的な知識を勉強する方が増しだと思う」、「機械学習と聞いたら目に見えない何かの演算がパソコンの内部で行われることが連想され、初学者のためや教育用としてのソフトウェアを開発するのであれば、機械学習の仕組みが目に見える直感的な構造となっていれば良いと思われる」など、プロジェクトのタイトルの一部である「初学者のため」というところに対する指摘が多かった。
今後の課題としては、必要不可欠な関連知識(数学やプログラミングや統計など)を簡潔にも習得できるように改善をすることと、ライブラリーの入っている様々な学習モデルそれぞれの仕組みを目に見えるようにする機能を追加することで、「初学者のため」というタイトルが持つ意味に当てはまるソフトウェアを開発することなどが挙げられる。また、今回のプロジェクトは実験による客観的な意見が欠けているため、現場実験とアンケート調査を用いた実験を行うことも改善案として挙げられる。