19 ポイント 投稿者 GN⁺ 2025-01-07 | 1件のコメント | WhatsAppで共有
  • AI/ML分野で働くつもりはまったくなかった
  • ただ仕事に必要なツールを使っているうちに、自然とAIやMLを使うようになり、最終的にはこの分野に足を踏み入れることになった(CMU准教授)
  • 新年を機に2000年に立ち返り、これまで関わってきた主要なAI/MLプロジェクトを振り返る

If文とランダムな数値: 初期のプログラミング体験

  • ビデオゲームから始まった:
    • たまごっちに着想を得て、VB6でバーチャルペットゲームの開発を試みた。
    • タイマーと条件文を使って単純なロジックを実装:
      • 10秒ごとに空腹度が増加。
      • 空腹度が一定レベルを超えると、3秒ごとに体力が減少。
      • 体力が0になるとペットが倒れる。
    • 結果: 単調で面白みのないゲームになった。
  • 高校時代のゲーム開発:
    • 2D宇宙シューティングゲームを開発:
      • プレイヤーが敵のウェーブを防ぎつつ、パワーアップを集める。
    • 敵の出現パターンは、ランダムな数値とゲームプレイ統計(プレイ時間、発射回数、HPなど)を使った長いif文で実装。
    • 結果:
      • ゲームにやや動的で予測不能な感触が生まれた。
      • しかし興味は長続きせず、プレイヤーはすぐにやめてしまった。
  • AIという概念の探求:
    • 2000年代半ば、Programming Game AI by Example を購入し、ゲームにAIを実装する方法を学んだ。
    • 当初は活用できなかったが、その後のプロジェクトで大いに役立った。
  • この時期の経験は、より複雑で興味深いゲームメカニクスを試す土台になった

状態機械と高階関数: 大学時代のゲーム開発

  • ゲームの進化:
    • 大学時代、ゲーム開発の水準を一段引き上げ、何百万人もが遊ぶゲームを制作した。
    • 一部のゲームは収益化にも成功。
    • プログラミングの腕が成熟するにつれ、本で学んだ内容を実戦で活かせるようになった。
  • 技術の適用:
    • 有限状態機械(Finite State Machine):
      • 敵の行動パターンの実装に活用。
    • ファクトリーパターン:
      • オブジェクトの生成と管理。
    • 高階関数(Higher-order Functions):
      • 敵や武器の挙動を組み合わせ可能な設計にした。
      • 例:
        • 武器は左右25度の振幅で揺れながら、細い円錐状に弾を発射する。
        • 弾は近くの目標へわずかに誘導され、1%の確率でリコシェット(跳弾)が発生。
  • ゲームの生き生きとした感じ:
    • ゲームの状態とプレイヤー入力をもとに、動的な要素を段階的に追加。
    • ランダム性と組み合わせ可能性を使って変化を加えた。
    • このアプローチは敵の行動だけでなく、スプライト、パーティクルエフェクト、効果音、弾、アニメーションなどゲーム全体にレイヤー的に適用された。
  • 結果:
    • ゲームはより生き生きとして面白くなった。
    • しかしそれはAIではなく、よく設計されたif文と関数呼び出しの組み合わせにすぎないと気づいた。
  • ゲームに「生きている」ような感覚を与えることはできたが、この段階ではなお手作業で設計したロジックと関数を使っているにすぎないと理解した。

一階述語論理、知識表現、サポートベクターマシン、ニューラルネットワーク: 大学院初期の経験

  • 修士課程の開始:
    • 卒業後、締切ぎりぎりで修士課程に登録。
    • 選べる授業が限られており、AIとニューラルネットワークの講義を受講。
    • 本来希望していたコンパイラ講義の代わりに選んだ授業には失望した:
      • 演習や実装がなく、高次の理論中心。
      • 定義をめぐる議論が多かった。
  • AI講義:
    • Artificial Intelligence: A Modern Approach (Third Edition) を教科書として使用。
    • 計画、エージェント、一階述語論理、知識表現などの概念を学んだ。
    • 問題を考えるための新しい語彙は得たが、実際に応用するのは難しかった。
  • ニューラルネットワーク講義:
    • パーセプトロン、サポートベクターマシン(SVM)、フィードフォワードネットワーク、ホップフィールドモデル、バックプロパゲーション(backpropagation)などの理論を学習。
    • 実習に関する明確な指針が不足:
      • 「MATLABパッケージを探してみなさい」という教授の返答に落胆。
  • 低帯域ビデオチャットプログラムの開発:
    • OpenCVで顔検出と領域抽出を実施:
      • 口角の状態、左眉の位置、右目が開いているかどうかなどを分類。
      • ラベル付けされた顔画像を数百枚、データベースから収集。
      • 分類した二値状態をソケット経由で送信し、OpenGLでアバターをレンダリング。
    • 結果:
      • 照明変化に敏感で、パラメータ調整が難しく、学習に長時間を要した。
      • OpenCVの扱いも難しく、プログラム修正が煩雑だった。
  • 成果:
    • 多くの試行錯誤を通じて多くを学んだ。
    • 2013年1月、初期デモ動画をアップロードして共有:
      • デモ動画 はアマチュア的ではあるものの、1000回を超える視聴を記録。
  • この時期は、理論を実際に実装し、問題を解決する方法を学ぶ重要な成長の過程だった

決定木、クラスタリング、推薦アルゴリズム: 博士課程での経験

  • 研究目標:
    • コードエディタのログデータを分析し、次のような問題の解決を試みた:
      • プログラマーがコードで行き詰まっている、あるいは道に迷っているかを特定する。
      • プログラマーが次に調べるファイルを予測する。
      • 関心のあるコードを正確に推薦する。
  • 活用した統計的手法:
    • C4.5アルゴリズム: 決定木を生成。
    • K-means と DBSCAN: イベントのクラスタリング。
    • Apriori と協調フィルタリング: イベント間の関連性を探索。
    • 結果:
      • 単純な手法でありながら、驚くほど強力な性能を示した。
      • ほとんどの場合、複雑なニューラルネットワークよりもこれらの方法で十分に効果的だった。
  • 成果:
    • 論文発表、複数のインターン経験、開発者ツールの制作。
    • 博士課程を修了。
  • 関連資料:
    1. 論文: 開発者が情報を探す方法に関するデータ分析
      Foraging and Navigations, Fundamentally: Developers Predictions of Value and Cost (PDF))
    2. Microsoftインターン報告: コードレビューボット制作の経験
      When users never use the features they asked for
  • 博士課程のあいだ、統計的手法を使って実践的な問題を解決し、学術と実務の両方で意味のある成果を上げた

インテリジェントユーザーインターフェース: 教授としての研究の始まり

  • 新たな研究方向の設定:
    • 2018年、テニュアトラック教員として インテリジェント開発者ツール(Intelligent Developer Tools) を研究テーマに選んだ。
    • 当初は概念が曖昧だったが、予測モデルを使ってプログラマーの誤解を事前に特定し、修正するプロジェクトから始めた。
  • 最初の研究提案:
    • プロジェクト目標:
      1. プログラム解析技術と予測モデルを活用し、初心者プログラマーがプログラムの動作について抱く誤解を特定する。
      2. プログラマーを邪魔せずに誤解を修正し、ロジックを説明する。
      3. 意図しないプログラム動作の変化を捉えるテストコードを生成し、将来の誤解を防ぐ。
    • 要約:
  • 第2のプロジェクト:
    • プログラマーの情報ニーズを予測し、リアルタイムでユーザーインターフェースを生成する研究。
    • 例:
      • Git履歴を探索しているプログラマーに、推奨コミット群を可視化して提示する。
  • 研究の統合:
  • 成果と限界:
    • プロジェクトは助成を受けて順調に始まったが、研究が本格化する前に教授職を辞した。
  • この時期は、インテリジェントユーザーインターフェースに関する研究を具体化し、大きなビジョンを設計した重要な転換点だった

プログラム合成と大規模言語モデル(LLM): Microsoftでの経験

締めくくり

  • 楽しい25年だった
  • これからの計画は? これからも教え、学び、作り続ける予定

1件のコメント

 
GN⁺ 2025-01-07
Hacker Newsのコメント
  • AIチームにいたが、本当に説得力のある理由がない限りAIの適用は控えていた。ユーザーの問題を解決しようとしているのか、LLMが必要なのか、それともいくつかのif文で十分なのかを考えていた。自然言語が適切なインターフェースなのか確信する必要がある
    • AI分野でこの実用的なアプローチは新鮮に感じられる。単純な回帰モデルがニューラルネットワークより高い性能を示したツールを作った経験がある。AIに全面的に賭けないことについて、チームの反発を避けるのは難しかった
  • 14年間にわたって似たような道のりを経験してきて、今日ならどう違っていたのかといつも気になっていた
    • 私たちは業界とともに成長し、段階的により複雑なものを学ぶことができた。今日卒業した学生たちは、最初の仕事で数十年分の複雑さに直面する
  • 最近UTKを去った人を見かけたが、彼が書いたブログ記事を読んで、大学院修了後に学界へ進むことについて改めて考えさせられた
  • 広告やポップアップでごちゃごちゃしていないウェブページが新鮮に感じられる。すっきりとしてよく整理されたテキストとシンプルな構成でできている
  • 多くの人にとってAIは、驚くべきものを創り出す楽しい旅だ。その結果が驚異的であることには同意する。しかし、科学者たちが自分たちの仕事が社会に及ぼすより大きな影響を考えないのは悲しいことだ。彼らは社会的地位が高まるにつれて、自らの創造物によって社会構造を根本的に変えている。AIは危険な要素の一つであり、大企業が知性を称揚して人々を引き寄せるのは災厄の兆しだ