Blog
PFNフェローの丸山(宏)です。2月にプログラミング教育についてのブログを書きました。またそれに合わせて制作した教材を利用して、6月に弊社カフェテリアで、小学生を対象にした体験教室を開催しました。この体験教室については、丸山(史郎)がロボットカーの体験教室について、西澤が火星語翻訳を題材にした教材について書いています。今回、山梨大学と共同で、高専・大学学部向けの教材 ロボットカーで学ぶ深層学習の基礎 を開発しました。このブログでは、これら一連の教育関連の活動について、その意義と全体像をもう一度整理してみたいと思います。
また、付録に、現在PFNが提供する教育用コンテンツのリストがありますので、そちらもご利用ください。
古典的プログラミング
2016年に文部科学省が主宰する「小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議」は、議論の取りまとめを公表し、その中で
自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力
をプログラミング的思考と呼び、それをこれからの時代における普遍的な能力として教育課程に組み込んでいく必要を訴えました。ここで言う「プログラミング」は、アルゴリズムを実行するステップを明示的に書き下すタイプの通常のプログラミングで、このようなプログラミング作られたソフトウェアをここでは古典的ソフトウェアと呼ぶことにしましょう。
ソフトウェア2.0
古典的プログラミングでは、「計算機にやってほしいこと」を記述するのに、計算のステップを明示的に計算機に指示するプログラミング方法しかありませんでした。しかし、それが計算機に対する唯一のプログラミング方法でしょうか。深層学習による帰納的プログラミングにおいては、入出力の例示(訓練データセット)を与えることによって「やってほしいこと」を記述します。Optunaのようなベイズ最適化ツールは最大化(最小化)したい関数の、特定の点の値を返す「オラクル」を記述することによって「やってほしいこと」を記述します。どちらも、計算のステップは記述しません。このようなプログラミングによるソフトウェアをTeslaのAndrej Karpathy氏はソフトウェア2.0と呼んでいます。
ソフトウェア2.0では、計算機内部で実行されるアルゴリズムを知らなくても構いません。「やってほしいこと」を伝える方法さえ知っていれば計算機というツールを使うことができのです。たとえば乗換案内というツールを考えてみましょう。「やりたいこと」は出発地と目的地を指定することで伝えることができます。場合によっては、航空便を使わない、とか時間よりも価格を重視する、とかの最適化もできます。乗換案内を実装している中のアルゴリズムをご存知でしょうか。基本は初期の人工知能研究の成果、たとえば手段目的分析(means-end analysis)などの探索アルゴリズムのようなものだと思います(私は中身を見たわけではないので、想像にすぎません)が、中身を知らなくても乗換案内を効果的に使うことができます。
乗換案内のような道具を使う際に大事なのは、その中身がどのようなメカニズムで実装されているかではなく、それが提供する機能、すなわち「A地点からB地点まで移動する最短時間(最短コスト)の経路を表示する」というものだと思います。機能さえ知っていれば、中のメカニズムを知らなくても使えるのです。私達が毎日使っているテレビ、スマホ、電車などは、その機能はよく知っていますが、中のメカニズムを正確に知っている人はほとんどいないと思います。それでも上手に使えます。同様に、これからの計算機は、古典的プログラミングを知らなくても、深層学習やベイズ最適化の「機能」だけ知っていれば使える時代が来るのだと思います。
小学生に対して私たちが教育コンテンツを提供するのは、このような未来を想定しているからです。
深層学習の正しい理解と普及
長期的には「やってほしいこと」を記述するだけのソフトウェア2.0的なプログラミングが可能になると思いますが、一方で、直近では深層学習という新しい技術を正しく理解し、社会問題の解決に効果的に使っていくスキルが求められます。深層学習は人工知能研究における偉大なブレークスルーですが、それだけで人間の知性のような、いわゆる「汎用人工知能」が実現できるわけではありません。ホーキング博士が言う「人間を超えるAI」は、まだSFの世界の話であり、現在の深層学習技術の延長上にはない、というのが多くの人工知能研究者の意見です。深層学習にできること、できないことを正しく理解し、それを等身大に発信していくことが私たちには求められています。
PFNが提供する「ディープラーニング入門 Chainerチュートリアル」などの教育コンテンツは、これは社会で実際に深層学習を利用する社会人の方々、あるいは卒業後にそのような職種につきたいという大学生・大学院生の方々に対して、この技術を正しく理解して、正しく有効に活用していただきたい、という意図で提供しているものです。このため、深層学習のベースとなる数学や確率・統計の理解を含め、記述の正確性に重点を置いたコンテンツになっています。
今回山梨大学の牧野先生・西﨑先生と共同で作らせていただいたコンテンツは、より間口を広くして、高等専門学校から大学学部レベルの学生の方々に、深層学習に興味を持っていただく内容になっています。このため、レゴ(R) マインドストーム(R) EV3というロボットカーを実際に深層学習で制御して走らせてみる、というハンズオンスタイルの教材になっています。また、ルールベースの古典的プログラミングと深層学習によるSoftware2.0のプログラミングを対比して学べるようになっています。深層学習の訓練(学習)を含めすべてのPythonプログラミングがRaspberry Pi上で完結するように設計されていて、クラウドに依存することなく、授業を実施することができます。このあたりは、ワークショップ型の授業の経験豊富な牧野先生・西﨑先生のノウハウが存分に活かされています。
今後もPFNは、将来を見通して、社会にとって必要な教育コンテンツを、初等教育からリカレント教育まで幅広く提供していきます。
PFN提供教育用コンテンツ一覧
いずれのコンテンツも、自習や学校での授業には自由にお使いいただけます。
大学・大学院・社会人向け
- ディープラーニング入門 Chainer チュートリアル
数学の基礎、確率・統計の基礎、プログラミング言語 Python の基礎から、機械学習・ディープラーニングの理論の基礎とコーディングまでを丁寧に幅広く解説したオンライン教材。ディープラーニングをじっくり学びたい社会人の自習や、大学・大学院での講義資料として最適。 - 日本メディカルAI学会 メディカルAI専門コース オンライン講義資料
数学、確率・統計やPythonの基礎知識を前提として、ディープラーニングを速習、さらに健康・医療における応用事例までをカバーしたオンライン自習教材。
関連ブログ(2012/12): Google Colaboratoryを用いた機械学習・深層学習の入門教材を無料公開(健康・医療向けデータを用いた実践編も含む)
高校・高専・大学学部向け
- ロボットカーで学ぶ深層学習の基礎(スライド(Githubからダウンロードください)、ソースコード)
Raspberry Pi上で訓練(学習)からレゴ(R) マインドストーム(R) EV3の制御までを行うワークショップ型の教材。大学・高専などにおけるハンズオン形式の授業に最適。
初等教育向け
- 文部科学省「みらいの学び」 自動化の進展とそれに伴う自分たちの生活の変化を考えよう
初等教育向けのディープラーニング教材。最新の技術の紹介のビデオ、ディープラーニングで「火星語ほんやく機」を作るハンズオン、自動化によって変わる社会を考えさせるスライドからなる。文部科学省プログラミング教育推進月間の一環として、全国33校の小学校の「総合」の授業で利用中。
関連ブログ:
2019/2 プログラミング教育推進月間の教材について
2019/6 小学生向けディープラーニング体験教室でロボットカーの授業をしました
2019/6 小学生向けディープラーニング体験教室で「ものまね算」のワークショップをしました
論文:
帰納的プログラミングの初等教育の試み 日本ソフトウェア科学会36回大会(スライド)