※本記事は、スタンフォード大学のAndrew Ng氏とMehran Sahami氏による対談「How AI is Changing Coding and Education」の内容を基に作成されています。オリジナルの動画は https://www.youtube.com/watch?v=J91_npj0Nfw でご覧いただけます。本記事では、対談の内容を要約・構造化しており、内容は原著作者の見解を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの動画をご視聴いただくことをお勧めいたします。 スタンフォード大学の人工知能プログラムについての詳細は https://stanford.io/ai から、また機械学習専門コースについては https://online.stanford.edu/courses/s... から、スタンフォードオンラインのAIプログラム全般については https://online.stanford.edu/artificia... からご確認いただけます。
1. 導入:講演者紹介
1.1. Andrew Ng氏の経歴と実績
司会者:本日は、AIが教育とコーディングをどのように変革しているかについて、スタンフォード大学を代表する二人の講演者をお迎えしています。まず、Andrew Ng氏をご紹介させていただきます。現在、deeplearning.aiの創設者として活動される一方、AI fundのマネージングジェネラルパートナー、Landing AIの創設者兼CEO、Corseraの会長兼共同創設者を務めておられます。また、スタンフォード大学では非常勤教授として教鞭を執られています。
機械学習とオンライン教育のパイオニアとして、これまでに800万人以上の人々がAndrew氏の機械学習コースやAIクラスを受講しています。また、Googleでは、Google Brain teamの創設リーダーを務め、その後Baiduではチーフサイエンティストとしても活躍されました。2012年から2013年にかけては、スタンフォードAIラボのディレクターも務められました。2023年にはTime誌によって、AI分野で最も影響力のある100人の一人として選出されています。
現在は、主に起業家としての活動に注力されており、グローバル経済における責任あるAI実践を加速させるための最適な方法を追求されています。
Mehran Sahami氏:私にとって、Andrewと共に仕事ができることは大きな喜びです。彼がCorseraなどのプラットフォームを通じて、教育を世界に広く民主化してきた功績は計り知れません。
このように、Andrew Ng氏は研究者、教育者、起業家として、AI分野における技術革新と教育の普及に多大な貢献を続けています。
1.2. Mehran Sahami氏の経歴と教育への貢献
司会者:続いて、Mehran Sahami教授をご紹介させていただきます。現在、スタンフォード大学のコンピュータサイエンス学部でTencent学部長職およびJames and Elanor Cheesbro工学部教授を務めておられます。また、学部教育のBass Fellowとして活躍され、以前はコンピュータサイエンス教育の副学部長として教育面での重要な役割を担ってこられました。
スタンフォード大学の教員となる前は、Googleのシニアリサーチサイエンティストとして、コンピュータサイエンス教育、人工知能、倫理に関する研究に従事されていました。2013年にはACM/IEEE合同タスクフォースのコンピュータサイエンスカリキュラム共同議長を務め、国際レベルでの大学コンピュータサイエンスプログラムのカリキュラムガイドラインを策定されました。
また、ACM教育委員会の委員長やACM評議会の選出メンバーを務められ、カリフォルニア州知事Jerry B. Brown氏から州のコンピュータサイエンス戦略実施計画諮問委員会のメンバーに任命されています。
Andrew Ng氏:スタンフォードのキャンパスにおいて、Mehranは伝説的な存在です。多くの学生が、当初は別の専攻を考えてキャンパスに来ても、Mehranの授業を受講した後にコンピュータサイエンスを専攻することを決めるというのは、非常によくある話です。私自身、YouTubeで彼の入門プログラミングの講義をいくつか視聴し、多くの教育手法のヒントを学ばせていただきました。私の知る限り、Mehranは世界で最高のCS入門教育者の一人です。素晴らしい機会に恵まれ、本日は彼と一緒にこのテーマについて議論できることを嬉しく思います。
Mehran Sahami氏:Andrew、あなたは本当に親切すぎます。実際には、学生たちはあなたから機械学習を学ぶ機会を得るためにスタンフォードに来ているのです。Corseraやその他のプラットフォームを通じて、コンピュータサイエンスだけでなく、より広く世界の教育の在り方を変革してこられた功績は、本当に素晴らしいものです。私も、本日はAndrewと共にこの対話ができることを大変光栄に思います。
2. AIが変えるソフトウェア開発の現状
2.1. 経験豊富な開発者への影響
司会者:AIは様々な分野に影響を与えていますが、特にソフトウェア開発分野における変革について、お二人の見解をお聞かせください。
Andrew Ng氏:AIは現在、化学や生物学など様々な分野で革新的な変化をもたらしています。本日発表されたノーベル化学賞は、この分野でAIを応用した研究が評価され、また昨日は、Jeff HintonとJohn Hoffieldが物理学賞を受賞しました。
私がソフトウェアエンジニアとして特に興味深く感じているのは、私たち自身の分野への影響です。最も明確なトレンドとして、これまでにない速さで物事が進んでいることが挙げられます。これは主に二つの側面で見られます。
一つは、経験豊富な開発者が生成AIを様々な形で活用している点です。ソフトウェア開発者の仕事は、ドキュメントの作成、コードの生成、デバッグ、テストケースの作成など、多岐にわたりますが、これらすべての作業において生成AIが大きな支援となっています。
実践的な例を挙げると、数ヶ月前にローレンス・モローニ(元Google社員)から興味深い指摘を受けました。開発者がAIから大きな恩恵を受けている一例として、コーディングのデザインパターンがあります。私自身、オープンソースプロジェクトで作業をしていた際、GPT-4を使用してコードのアーキテクチャを検討していたところ、ファクトリーメソッドという特定のデザインパターンを提案されました。これは私が普段あまり使用しないパターンでしたが、結果として私の当初の実装よりもはるかに優れた解決策となりました。
Mehran Sahami氏:その通りです。最近、マイクロソフトのCTOであるKevin Scottと話す機会がありましたが、彼らの会社では、GitHub Copilotのようなツールを全社的に導入し、プログラマーの生産性を向上させています。さらに注目すべき点として、今後1〜5年以内に大学を卒業する学生たちに対して、これらのAIツールを使いこなすスキルが必須になるという見解が示されました。
これは私たちアカデミアにとって、もはや「導入するかどうか」ではなく、「いつ、どこで、どのように導入するか」という問題です。学生たちの教育プロセスのどの段階でこれらのツールを導入すべきか、また従来の教育パイプラインや話題の構成をどのように変更すべきかを検討する必要があります。この議論はまだ完全には決着していません。初めての授業で導入すべきという意見から、卒業間近の大規模プロジェクトで導入すべきという意見まで、様々な見解が存在しています。
2.2. 非プログラマーへのソフトウェア開発の広がり
Andrew Ng氏:AIがもたらすもう一つの重要な変化は、そしておそらくこれはより興味深い点なのですが、より多くの人々をソフトウェアエンジニアリングの世界に導いていることです。もはやコンピュータに特定の処理をさせるための正確な構文やコマンドを覚える必要はありません。ツールを使用することで、少しだけプログラミングを学べば、ローコード形式で、以前であれば何ヶ月もしくは何年もかかっていたような魅力的なアプリケーションを構築することができるようになっています。
私の仕事を通じて、実際に様々な事例を目にしています。例えば、私のチームの一人のマーケターは、マーケティングインサイトを収集するためのウェブサイトを作成するコードを書きました。また、私のチームのレポーターは、注目すべきストーリーを自動的にフラグ付けするためのコードを書いています。さらに、投資家のチームメンバーは、法的契約書の生成を自動化するためのコードを書いています。このように、ソフトウェアエンジニアではない多くの人々が、生成AIをコーディングのパートナーとして活用することで、プログラミングを行い、それぞれの職務において大きな生産性の向上を実現しています。
司会者:そうですね。生成AIによって、プログラミングの世界がより多くの人々にアクセス可能になっているということですね。従来のプログラミングの専門知識がなくても、各分野の専門家が自身の業務に必要なツールを開発できるようになってきているということでしょうか。
Andrew Ng氏:その通りです。これは特に重要な変化です。なぜなら、これまでソフトウェア開発の専門家ではなかった人々が、自分たちの業務や課題に対して直接的にソリューションを作り出せるようになったからです。これにより、様々な分野でより迅速な問題解決が可能になっています。
このように、AIツールの進化は、プログラミングの敷居を大きく下げ、より多くの人々がソフトウェア開発の恩恵を受けられる環境を作り出しています。これは単なる技術的な進歩以上に、問題解決の手法自体を変革する可能性を秘めています。
3. 教育現場でのAIの活用と課題
3.1. 教育カリキュラムにおけるAIツール導入の課題
Mehran Sahami氏:産業界のニーズと大学教育をどのように結びつけるかについて、マイクロソフトのCTOであるKevin Scottとの対話から興味深い示唆を得ました。マイクロソフトでは、GitHub Copilotのようなツールを全社的に導入し、プログラマーの生産性向上に活用していますが、特に注目すべき点は、今後1〜5年の間に大学を卒業する学生たちに対して、このようなツールを使いこなすスキルが必須になるという見解です。
これは私たち教育者にとって、単なる選択肢ではなく、必然的な課題となっています。問題は「もし導入するか」ではなく、「どこで、どのように導入するか」に移っています。具体的には、学生の教育プロセスのどの段階でこれらのツールを導入すべきか、また、従来の教育カリキュラムをどのように再構築すべきかという点です。
現在、この議論はまだ完全な結論には至っていません。初年度の入門コースで導入すべきという意見から、卒業前の大規模プロジェクトで使用すべきという意見まで、その間のあらゆる段階での導入を支持する意見が存在しています。スタンフォードでも、複数の異なるアプローチを検討していますが、これはもはや導入するかどうかの問題ではなく、いつ、どこで導入するかという問題として捉えています。
Andrew Ng氏:学術機関が直面している最も興味深い課題の一つは、将来の仕事を予測し、それに向けた人材育成を行うことです。私たちは単に昨日や今日の仕事のために人材を育成するのではなく、2年後、3年後、4年後、さらには10年、20年後に存在する仕事に必要なスキルを確実に身につけさせる必要があります。
生成AIの急速な進化を考えると、将来的には多くの開発者、おそらくすべての開発者がAIツールを使用することになるでしょう。これは単純に、使用しない場合と比べて明らかに生産性が高くなるためです。ただし、技術の進化が非常に速いため、長期的に重要で汎用的なスキルと、急速に変化する可能性のある技術を見極めることが現在の課題となっています。
3.2. プログラミング基礎教育における重要スキル
Mehran Sahami氏:生成AIツールを効果的に活用するためには、学生たちが生成されたコードを正確に理解することが不可欠です。これには主に二つの理由があります。第一に、そのコードが実際に自分が解決しようとしている問題に対して適切に機能しているかを検証できる必要があります。第二に、そのコードが解決すべき問題に対して本当に適切なアプローチなのかを判断できなければなりません。
そのため、私たちの初年度のコースでは、学生たちにAIツールを使って大部分のコードを生成させることはしていません。代わりに、プログラミングの主要な概念と、それらを特定のプログラミング言語でどのように組み合わせるかを教えています。現在は私たちの最初のコースではPythonを使用していますが、過去にはCやJava、さらにはPascalでも教えてきました。言語が変わっても、基本的な概念は同じままです。
このことは、プログラミングには言語の構文とは別に、問題解決のための本質的な基礎概念が存在することを示しています。例えば、大きな問題を小さな部分に分解する方法、コードの各部分間のインターフェースを定義して全体をモジュール化する方法、システムの複雑さが増大しないように管理する方法、そして実行中のコードをメンタルモデルとして理解し、検証やデバッグを行う方法などです。
これらの基礎的なスキルは、特に最初の二つのコースでは変わることはないでしょう。その後、第三のコースから最終的な卒業プロジェクトまで、学生たちは人間であれAIであれ、誰かが作成したコードを詳細に分析し、より良い方法がないかを検討し、必要に応じてデバッグする能力を養っていきます。
このように、私たちはまず強固な基礎を築き、その上でAIツールを活用していく段階的なアプローチを採用しています。基礎的な概念とスキルの重要性は、AIツールの発展に関わらず、今後も変わることはないと考えています。
4. コンピュータサイエンスの基礎スキルの重要性
4.1. プログラミングを通じた問題解決能力の育成
Mehran Sahami氏:学生たちは10週間のクォーターで大量のPythonプログラミングを学び、演習に取り組みます。しかし、クォーターの最後に私が彼らを驚かせることがあります。「これはプログラミングの授業ではありませんでした」と私が言うと、学生たちは「何を言っているんですか?この10週間ずっとプログラミングをしてきたじゃないですか」と反応します。
実は、これは問題解決についての授業なのです。確かにPythonについて教えましたが、本当に学生たちに理解してほしかったのは、問題をどのように体系的に考え、それらを小さな部分に分解し、その小さな部分それぞれにどう取り組み、そしてそれらを大きな問題の解決へとどのように組み立て直すかということです。
これは私たちが世界の大きな問題を解決する方法そのものです。例えば、気候変動は一個人の行動で解決できる問題ではありません。それは複数の部分に分解され、より体系的な方法で考えられ、より大きな解決策としてまとめられる必要があります。
プログラミングは、この種の思考を具体化する方法です。私たちの思考をコンピュータが実行できるように記述することで、私たち自身の思考、問題解決能力、問題の分解能力が明確になります。生成AIについて考えると、それは一種の共生的なパートナーとして、問題をどのように分解できるかを考える手助けとなります。
現在では、問題を解決するために必要なレベルまで分解する必要はありますが、以前ほど低レベルまで降りていく必要はないかもしれません。しかし、これは多くの人々に力を与えることになり、彼らは自分たちが貢献できる小さな部分について考えることができるようになります。このように、コンピュータに対して実行可能なレベルまで明確に記述する必要があるという点で、プログラミングは人々の間のコミュニケーションにおいても重要な思考の明確さを養うことができるのです。
4.2. 実践的な開発判断とコンテキストの重要性
Andrew Ng氏:今日のAIシステムがより賢い決定や判断を行う上での主要な課題の一つは、人間が持っているような豊富なコンテキスト(文脈)が欠如していることです。例えば、特定の方法で何かを行う理由について、様々なプロセスやデータのプランビングが必要かもしれませんが、現状のAIシステムはそのような背景情報を十分に持ち合わせていません。
具体的な例を挙げさせていただきます。数ヶ月前、あるシステムの動作が遅かったため、私はキャッシュを実装することにしました。Pythonの特定のキャッシュモジュールの使い方を思い出せなかったので、AIにコードを書いてもらいました。AIは完璧なコードを生成してくれましたが、ここで重要なのは、私自身がキャッシュやメモ化という概念を知っていたということです。これは通常、コンピュータサイエンスの入門コースで教えられる内容です。もしこの概念を知らなかったら、そもそもAIにキャッシュの実装を依頼することもできなかったでしょう。
このケースで私が適切な判断を下せたのは、二つの重要なコンテキストを持っていたからです。まず、ソフトウェアが遅すぎるという判断を下せたこと。AIシステムにこの判断を行わせるためには、どれだけのインフラやデータが必要になるか想像もつきません。次に、私たちのシステムにはスペースの余裕があり、キャッシュの実装が実現可能だということを知っていたことです。キャッシュを使用するという決定、そして他の選択肢の中からキャッシュを選ぶという判断には、実は複雑な意思決定プロセスが含まれていたのです。
将来的には、AIが十分なコンテキストや背景知識を持ち、リソースの状況や重要性について推論できるようになるかもしれません。そうなれば、人間がこれらの高レベルの決定から手を引くことも可能になるでしょう。しかし現状では、優れたソフトウェアエンジニアや設計者は、実現可能性や達成目標について、驚くほど広範なコンテキストを持っており、このコンテキストをすべてデジタル化してAIに組み込み、推論能力も向上させるまでは、人間がこれらの判断を行う必要があります。
5. AIと専門知識の関係 : 専門分野との協働によるAIの価値創造
Andrew Ng氏:AIについて最も興味深い点は、AIが何かに応用されて初めて価値を生み出すということです。AIテクノロジー単独では実際にはあまり有用ではありません。しかし、汎用技術としてのAIは、経済のほぼすべての分野で説得力のある活用事例を見出すことができます。ヘルスケア、教育、金融サービス、物流など、様々な分野での応用が可能です。
私自身の経験から、最も刺激的なプロジェクトの多くは、AI専門家である私が、他分野の深い専門知識を持つ人々と協働する機会です。多くの場合、その分野について私がほとんど、あるいは全く知識を持っていない場合でも、協働することで大きな価値を生み出すことができます。
例えば、私の学生たちの多くはAIのヘルスケアへの応用研究を行っています。率直に申し上げると、私自身はヘルスケアについて、ここ数年の協働を通じて学んだことはありますが、医学部の医師と比較すると、私の知識は極めて限定的です。フルタイムで医療研究に従事している医師の知識の深さには遠く及びません。
Mehran Sahami氏:その通りですね。私も過去数年間、複数の政治学者と政策分野での協働を行ってきました。政策立案プロセスや、権利ベースのフレームワークと害悪ベースのフレームワークの違いなど、私が全く知らなかった多くの概念について学ぶ機会がありました。私が技術的な視点を提供し、彼らが政策の専門知識を提供することで、例えばプライバシーの問題について、技術的な実現可能性と価値観の保護のバランスを検討することができました。
このように、異なる分野の専門知識を組み合わせて対話を行うことで、特定の領域での進展を図ることができます。それぞれの分野からの専門知識がなければ、同じレベルでの理解を得ることは困難だったでしょう。
6. 産業への影響と変化 : AIがもたらす開発速度の加速と産業界の課題
Andrew Ng氏:私が目にしている興味深く、同時に緊張を伴う動向の一つは、コンピュータサイエンスとAIが様々な産業に統合されることで、CS分野特有の高速な開発サイクルが他の産業にも影響を及ぼし始めていることです。
具体的な例を挙げると、私が以前1年かけて構築していたようなアプリケーションを、今では何十万人もの人々が週末で作れるようになっています。これは新しいテクノロジーの存在によって可能になった変化です。「Move fast and break things(速く進んで物事を壊す)」というアプローチは確かに悪評を得ましたが、Jeff Bezosの言葉を借りれば「二方向のドア」を通して速く進むことで、物事を壊すことなく責任を持って迅速に行動することができます。
このような開発プロセスは、特に従来型の産業に大きなプレッシャーを生み出しています。例えば、FDAの承認プロセスには6ヶ月あるいは数年かかりますが、現在のCS専門家たちは、特にジェネレーティブAIの支援により、以前は数ヶ月かかっていたアプリケーションを数日や数週間で構築できるようになっています。
そのため、私は多くの大企業のC-suiteや取締役会と対話し、製造業やヘルスケアなどのテック以外の業界が、このCS特有の高速な開発ペースにどのように適応できるかについて議論しています。率直に申し上げると、この状況は多くの人々にストレスを与えています。ある業界の自然なペースで物事を進めていても、競合他社が1週間で完了できることを1年かけて行っているような状況では、非常に困難な立場に置かれることになります。
私は多くの人々がこのストレスを感じていることに深く共感しています。しかし、この課題に共に取り組むことで、多くの産業と人々がより良い状態になれると確信しています。
7. 将来の展望と教育の方向性 : コーディングスキルの普遍化
Andrew Ng氏:私は世界中のほぼすべての人々にコーディングを学んでもらいたいと考えています。少なくとも、知識労働者のほとんど、そしておそらくほぼすべての人々にとって、コーディングを学ぶことは大きな価値があるでしょう。
これは、かつて社会が「すべての人がリテラシーを身につける必要があるのか」と疑問視していた時代を思い起こさせます。当時は「読み書きは他の人にやってもらえばいい」という考えもありましたが、幸いにもその考えは過去のものとなりました。
今日、私たちは「すべての人がコーディングを学ぶべきか」という同様の問いに直面していますが、私の答えは明確に「イエス」です。私の子どもたちはまだ小さいですが、少し大きくなったら必ずコーディングを教えるつもりです。
なぜなら、コーディングの本質は、コンピュータに対して何をしてほしいのかを正確に伝える能力にあるからです。これは、Pythonのような特定のプログラミング言語の構文を覚えることではありません。問題を分解し、コンピュータに対して体系的に指示を与える能力が重要なのです。
興味深いことに、英語とPythonの間に奇妙な収束が起きています。私のPythonコードには、生成AIに指示を与えるためのプロンプトとして、より多くの英語が含まれるようになってきました。同時に、生成AIに対する英語での指示は、「これをして、次にこれをして」というように、まるでシュードコード(擬似コード)のような構造化された形になってきています。
実際に、様々な職種の人々が、プロのソフトウェアエンジニアでなくても、生成AIをコーディングのパートナーとして活用してコードを書いており、それぞれの職務で大きな生産性の向上を実現しています。これは、コーディングスキルが将来的にますます普遍的な能力として求められていくことを示唆しています。
8. 倫理的配慮とコンピュータサイエンス教育における実践
Mehran Sahami氏:技術者として、私たちは非常に強力なツールを手にしており、そのパワーは生成AIによってさらに増大しています。そのため、私たちが作るものが誰にどのような影響を与えるのか、その影響が異なるグループにどのように分配されるのかを理解することが重要です。
私たちはハーバード大学のプログラムをモデルとして、「埋め込み型倫理(Embedded Ethics)」というプログラムを数年前に開始しました。このプログラムでは、Andrewが先駆的に取り組んだ機械学習の授業を含む複数のクラスで、特定の技術的な作業の文脈の中で関連する社会的課題を扱っています。
具体的には、アルゴリズムによる意思決定における公平性の問題、データのプライバシーと人々のデータに対する権利、最適化関数の選択が異なるグループに与える影響などを扱っています。これらの問題をカリキュラムの一部として組み込むことで、学生たちは産業界での仕事や、研究者として、あるいは学術界での活動において、技術が持つ社会的な波及効果について考えることができます。
Andrew Ng氏:実際、私はMehranが責任あるAIの考え方をコンピュータサイエンスのカリキュラム全体に組み込もうとする取り組みを、何年も前から目の当たりにしてきました。残念ながら、「AI安全性」という用語は、ある意味でサイエンスフィクションめいた終末論的なシナリオを指すように変質してしまいました。一方で、Mehranは長年にわたって、バイアスや系統的なエラーなどの実際の問題にどう対処するかという、非常に現実的で実践的な方法でこれらの課題に取り組んできました。私は、AIの安全性が「邪悪なロボット」のような話題になる前から、Mehranがこのような現実的なアプローチを実践していたことを、自分の目で確認してきました。
9. AIの発展がもたらす機会と課題
Mehran Sahami氏:AIと雇用の関係について、人々はしばしば「AIは雇用を創出するのか、それとも破壊するのか」と質問します。私がテクノロジーCEOのグループに対して話をした際に述べたように、AIは雇用を創出することも破壊することもありません。それを決めるのは人間なのです。AIは生産性を変化させる可能性のある技術であり、人間がその生産性の向上をどのように活用するかを決定することになります。
例えば、ソフトウェア組織でジェネレーティブAIを活用することで、組織全体の生産性が20%向上したとします。この時、経営者は20%の生産性向上をどのように活用するかを決定しなければなりません。より多くの製品や機能を開発するために使うのか、それともエンジニアリングスタッフを20%削減するのか。これは人間の意思決定であり、AIによって自動的に決まるものではありません。
Andrew Ng氏:現在、AIプロジェクトを構築し実行できる、真にスキルの高い人材が圧倒的に不足しています。CS106aやCS10xxのような基礎的なコースは、高度なCSスキルを身につけるための重要な第一歩となります。しかし、今後はさらに多くの人材が必要とされるでしょう。
司会者:本日は、AIが教育とコーディングをどのように変革しているのか、そして私たちがどのようにそれに適応していくべきかについて、非常に示唆に富む議論をしていただき、ありがとうございました。