Activity
2024-05-14

[Message for FUN]数学を基礎にソフトウェアハードウェア使いこなす能力(大澤英一)

[Message for FUN]

ソニーの研究所(Sony CSL)から開校当初の公立はこだて未来大学(以下、未来大)に着任した大澤英一先生は、数学の知識とプログラミング能力を併せ持ちながら、モノづくりができる学生を育てることを目指してきたそうです。このインタビューでは、着任までのいきさつ、教育の一環で取り組まれていたプログラミングコンテストの思い出、さらには、ビジョンを持つことの重要さについて語っていただきました。

インタビューに答える大沢先生
インタビューに答える大沢先生

未来大に着任するまで

AIとの出会いとソニー

僕が東工大理学部数学科の学生だった当時、人工知能を知ったきっかけがいくつかあります。学生の間で人工知能が登場する映画「2001年宇宙の旅」が話題になったこと、学部2年生の頃、米澤明憲先生という人工知能に近い専門の方が、東工大で人工知能の講義を始め、それを履修することができたことです。

卒業後、CDプレーヤーが世の中に出た1982年、ソニーに入社しました。僕は技術研究所という音響を専門にしている研究所で、デジタルオーディオに必要な誤り訂正符号(CDなどのデータの読み取りミスを修正する仕組み)の設計をやっていました。そういった業務をやっているうちにIBMの大型計算機を使うようになり、計算機科学、そして人工知能に興味を持つようになっていきました。

僕は人工知能の中でも自然言語処理、「対話」に興味を持ち始め、ソニーの留学制度を使い、対話に関する理論の第一人者、バーバラ・グロッツ(Barbara Grosz)がいたハーバード大学に1年間留学しました。戻ってくると、研究所は改組され、さまざまな研究所が統合されて総合研究所となっていました。それでも、最終的に製品に結びつくような研究がメインだったため、AIとは距離がありました。

そのころソニーでは、ワークステーション(業務用の高性能なコンピュータ)の事業がビジネスとして軌道に乗り始めていました。その事業を束ねていたのが土井利忠さんという方です。当時のソニーは、コンピュータの分野からは相手にされていませんでした。そこで土井さんは、ソニーが本気でコンピュータ事業を行うということを世界にアピールするために、ソニーコンピュータサイエンス研究所(CSL)を作り、1989年、僕はそこに移ります。

CSLでの研究

僕はAIのなかでもマルチエージェントシステムを専門にやっていました。これは、エージェントと呼ばれる自律システム、いわゆるロボットのソフトウェア版がいくつも(=マルチ)存在するシステムです。人間のように自律的に動くシステムを作り、何個も増やすと、それがコミュニティを作ります。その時に考えないといけないのは、このエージェントの間の相互作用の問題です。

例えば1人の人間が1つのエージェントを持って、そのエージェントが仮想共有空間で行動するとなると、背後に人間がいるので、そのエージェントの世界は人間の社会と同じような性質を持ってきます。マルチエージェントシステムは人間の社会を投影したようなものだと考えることができて、そうすると人間の社会で起きるようなさまざまな問題がやはり計算環境の中で生じるのです。そういうエージェントの社会のようなものをどう設計するかということを、CSLにいた頃にずっとやっていました。

大学に行くなら教授で

僕はCSLに入る面接で、キャリアプラン、要するに将来何をやりたいのかを聞かれた際、とりあえず30代までは第一線で研究して、その後は大学に行きたいと言っていました。CSLに入る時にいつか辞めますよと言っていたのです。CSLも、研究者としての次のステップは自由に進んでくださいという感じだったのです。

僕が30代後半に差し掛かった1990年代後半、函館に新しい大学を作ろうという構想が持ち上がり、どういう大学にするかを計画する委員会が組織されていました。そこにカリキュラムや研究の方向性に関してアドバイスするという役割で参加していたCSLの北野さんから、新しい大学の話を聞きます。新設の大学なら伝統や歴史がない分、新しい挑戦ができそうでしたし、教育の中核に人工知能を置くということも、自分の研究と合致していました。さらに、その頃、電子技術総合研究所にいた研究仲間の松原仁さんからも声かけてもらい、じゃあ一緒にやろうとなったのです。

未来大での教育

プログラミング教育

未来大に移り、最初に力を入れた授業はプログラミング演習でした。僕はシステムも分かり実装もでき、さらに数学も理解できることを教育の目標としました。今でいうGoogleが求めるような人材を輩出しようと思ったのです。数理的な能力があって、論理的な思考ができて、プログラミング能力も身についている。そんな理想を実現するのはどうすればいいのかをみんなで一生懸命考えました。

とにかく学生にプログラミングの能力を身に付けさせたい、ものすごく優秀で誰が見てもこいつはすごいなという学生を育てたいと思っていた中で、1年の時から優秀な学生3人ほどに、プログラミングコンテストという面白いのがあるから出ないか、と声をかけました。

アメリカで一番大きな計算機の学会、ACM(Association for Computing Machinery)が主催する大学対抗国際プログラミングコンテストがあります。このプログラミングコンテストのアジア地区大会が日本で開催されるというので、これに出ようと考えました。まずは国内予選があるのですが、出場するのは東大や京大、東工大の学生が多く、トップの10~20チームしかアジア地区大会に行けないので、予選を突破するのも大変なことでした。

秋に行われる国内予選に向けて夏休みを利用し、3人の学生に授業よりも高いレベルのアルゴリズムの解説や実装のトレーニングを徹底的に行いました。すると、みごと国内予選を突破し、1年生でアジア地区大会に出ることができたのです。2年生の時も同じチームで挑戦して、未来大で開かれたアジア地区大会に出場。僕らのチームが8位に入りました。日本のチームは8位までに3チームしか入っておらず、トップが東大で、東工大、未来大と続き、いい成果を出せたのです。

プログラミングコンテストのアジア地区大会で8位だった時の賞状
プログラミングコンテストのアジア地区大会で8位だった時の賞状

複合的に捉える大切さ

プログラミング演習の他に僕が担当していた授業には、人工知能系の授業のほかに、応用数学がありました。そこでは、応用とは言いながらも、主に線形代数をベースにした情報処理で使われるさまざまなアルゴリズムを理解するための数学的な基礎をやりました。

例えば高校の数学の教科書を開いてみると、大きく線形代数学と解析学(微分積分)と幾何学に「単元」が分かれています。大学で数学を専門に学ぶ場合、1年の時に教養として解析学と線形代数学を学び、2年生以降は集合位相論や微分幾何学、微分方程式と、「単元」ごとに学んでいきます。

数学を情報処理と結びつけて実世界で応用していこうと考えた時、数理的な能力で一番役に立つのは、1つの問題をさまざまな視点から眺めることができる力です。つまり、線形代数学的に解析したらこうなり、解析学的な見方をするとこうなる。さらに図形的な解釈をするとこういう問題になるといったように、多面的に見ることができることが重要です。いくらプログラミングで情報処理をするといっても、実際に対象となる問題があるわけです。その問題を1元的にしか見ないのでは見落としや限界があるかもしれない。僕はそういう意味で数学の力、数理科学的な思考力というのが重要だと思います。

ところが、ほとんどの学生は教科書のように数学が単元に分離したままで、2次方程式の解法と微積分とでは別の問題になっていて、総合的な知識を使ったアプローチがなかなかできないのです。公式を使って問題を解くのは得意で、2次方程式を解くことはすぐできます。ところがそうじゃなくなると、いきなり難しくなってしまいます。

例えば、こんな問題があります。2次方程式の3つの係数の値を、サイコロを振って決めるとします。そうやって2次方程式を作ったとき、その2次方程式が実数解を持つ確率を求めなさい、という問題です。実数解を持つかどうかは判別式の問題です。そして、判別式が0以上になる場合というのは、サイコロで決まる係数の組み合わせなので、今度は確率の問題になります。こういうのがいわゆる複合問題です。

この問題は方程式を解く問題と確率を求めるという問題の2つを含んでいます。こうやって噛み砕いて説明すると、2次方程式の解法や初等確率を知っていれば、大学生なら誰でも解けるようになります。でも問題を解くというのは、自分で含まれている問題を見出さなければいけない。その時に複合力が必要となります。そういう力を養うには、普段から多視点で多面的に物事を見ていくことが重要なのです。

モノを作ることができる学生を育てたい

幼少期の模型作りがLSI設計に

僕はハードウェアを作るのが好きです。小さいころから特に模型、飛行機や自動車を作るのがすごく好きでした。これは自分の育った環境と関係があります。うちの父親は有機合成が専門なのですが、父親の兄弟もみんな理系で、親族が集まると自然科学技術の話ばかりしていました。だから僕も小学校4年生ぐらいからエレクトロニクスに興味を持ち始め、ラジオを自分で作ったりするわけですよ。そういうのから始まってラジコン、アマチュア無線など、そういう方向に行きました。

ソニーで誤り訂正符号の設計をしていた時は、その製品化に必要なLSIの設計も自分でやりました。LSIの設計では、まず基板にICを200個ぐらい載せて、元となる回路を作ります。これで機能的に大丈夫だとなったら、それをLSIの設計図に落とし込むのです。僕はこの回路の設計もできました。それができたのは、やはり小学校、中学校の頃にそういう経験を積んだからだと思うのです。僕にとって、はんだごてを持って基板をいじることは別になんてことなかったのです。

プログラミングとモノづくり

情報処理や数理的な能力を使って、これは何ができるものなのかを決定できれば、あとは技術があればハードウェアも作って、モノを作ることができます。そういう能力を持つ学生を育てたいと思っていました。それで目をつけたのが缶サットという(空き缶サイズの)人工衛星を作るプロジェクトでした。

きっかけは2004年ぐらいに、東工大の学生が作った「キューブサット」がロケットに載って宇宙空間に行ったという記事が新聞に掲載されたことです。15cm角ぐらいの立方体を宇宙空間に飛ばして、周回軌道に乗せて運用すると書かれていました。これを未来大の学生にも挑戦してもらおうと思ったのです。

缶サットに参加すると決めた理由は、単純に楽しいからではなく、エレクトロニクスやメカトロニクスの複合体である人工衛星を動かすためには、もちろん筐体と、その他に通信や制御が必要で、総合的な能力が必要になるからです。このプロジェクト学習は最近までやっていました。学生の時に面白い題材を使って体験してもらうというのは結構重要だと思います。

未来大の3年生は学科・コースの枠を越えてテーマごとにひとつのチームをつくり、1年間かけて共同作業で課題解決に取り組む学習(プロジェクト学習)がありますが、非常に実用的な問題解決を目指す課題もあり、例えば病院のシステムを考えるといったプロジェクトもあります。そういった現場など、製品に近いような目標を持ったプロジェクトで本物を作ろうとなると、分担制になり、小さな会社組織みたいにグループが分かれることになるので、さまざまなこと学ぶということが難しくなることがあります。それは確かにプロジェクト運営という意味では1つの勉強で、プロジェクト学習の1つの目的であるのも事実です。一方で僕が目指したのは、学生が1人でハードウェアからソフトウェアからアルゴリズムの中までを全て通しで考えることができるように、グループをあまり大きくしないようにして、必ず全員がハードウェアからソフトウェアまで1通り見通せるようにすることでした。

メッセージ

ビジョンを持つ

やはりビジョンを持つことが重要だと思います。その大学で何を学びたいかではなく、最終的に自分がどういうことをやりたいのか、将来的に何をやりたいのかを、常に考えておく事が重要だと思います。

例えば人工知能を勉強すると言っても、人工知能は幅広い学問分野で、機械学習が全てではありません。自分がやりたいことが、今提供されているソフトウェアなどで実現するものなのであれば、それに集中すればいいと思います。基本的な技術を理解して、それをどのくらい応用できるかを考えればいいのです。

しかし技術には、どこかで枯れて再構成されて、また新しいものが出てくるというフェーズがありますよね。ずっと今の技術のまま留まることは絶対ないわけです。新しい技術が出てくる時に、誰が勝者になるのかを考えると、やはりその次の世代を見据えて準備していた人たちです。今のOpenAIに関して言うと、あれは数学の力だけではなくて、むしろ大量データをどう扱うのかという技術が重要でした。大量のデータをどう集めて、どう高速に処理するか。要するにハードウェアも含めた技術が重要なわけです。また、Googleを見てみると、単純にアルゴリズムや数理の問題ではなく、彼らは巨大なデータセンターを持っていることが強みだったわけです。そこまで準備していた、というのが効いているはずですよね。

今、話題になっていることをよく理解するということも重要ですが、自分は何をやりたいのかを見据えて、それを達成するためには何を学ばなければいけないのかをきちんと見定める必要があります。学生として勉強していく上では、自分がやりたいことに関してどういうことを準備しておけばいいのかというのを、大学のカリキュラムなどを俯瞰して、これが必要、あれが必要と考えておくことが重要だと思います。

ビジョンの言語化

自分の将来のビジョンを持って、その目標を達成するために今やるべきことは、ビジョンをしっかり情報として言語化する。言語化して、そういうものを書き残すべきことだと思います。

未来大に入って情報の勉強をしようと考えたからには、何かあるはずです。一番残念だと思うのは、「AI」や「ICT」や「情報」が世の中で話題になっているから未来大に来たという理由です。ブームに流されてはダメで、もう一歩踏み込んで自分は何をやりたくてこの大学に来たのかということを、ちゃんと考えておくべきです。大学を出て将来、それもできれば40歳、50歳くらいまでにどういうことをやりたいのかということを、はっきりと目標を立てて言語化し、そのために何を準備するべきなのかを考える習慣をつけてほしいです。そうすると重要なことに集中して勉強できるようになります。

みなさんには、大学で勉強する上で機会があるごとに考えて、自分のやりたい方向に行っているかどうかということを常に確認しながら歩んでほしいなと思います。

最終講義での様子
最終講義での様子