1. とらジオ
  2. 22-5: わざわざまず最初に失敗..
22-5: わざわざまず最初に失敗する
2026-08-10 16:51

22-5: わざわざまず最初に失敗する

1 Mention
spotify apple_podcasts youtube
HSL
HSL
Host
生成AIは2階建てで進化してきました

ハーネスエンジニアリングの何が嬉しいのか。「できた状態」を先に決めておけば、あとはAIが自分でぐるぐる回って辿り着きます。数学の未解決問題を解くのがその一例。プログラミングの世界には、テスト駆動開発という「できた状態を先に書く」型がすでにあり、それを丸ごとAIにさせられるようになっています。

 

感想

まだ感想はありません。最初の1件を書きましょう!

サマリー

ハーネスエンジニアリングにより、生成AIは「できた状態」を明確に定義することで、数学の未解決問題の解決や、テスト駆動開発によるプログラム作成を自律的に行うことができるようになりました。これは、AIが自ら試行錯誤を繰り返し、ゴールに到達する能力を獲得したことを意味します。この進化は、AIのパフォーマンスを飛躍的に向上させ、今後の応用範囲を広げる可能性を秘めています。

ハーネスエンジニアリングの重要性と数学の未解決問題への応用
さて今回は、ハーネスエンジニアリングがどんな風に嬉しいかという話をもうちょっと深掘りしたいと思います。
ちなみに前回までは、まずは、生成AIのエンジン自体がどういう風に進化してきたかというのを、3段階で解説をしました。
その後、生成AIのエンジン以外の部分、エンジン周りのところがどういう風に進化したかということで、
プロンプトエンジニアリング、コンテクスエンジニアリング、ハーネスエンジニアリングという3段階の進化を得たという話をしたのが前回でした。
前回そこでちょっと時間が来てしまったので、今回はエンジン周り以外の進化の最後、ハーネスエンジニアリングということが、
どういう風に嬉しくて、どういう風に急激な進化、生成AIのパフォーマンスという意味でいくと、
なんで急にグッと進化したかということを、いくつかの例で深掘りができればと思います。
何ができていればOKかという風な基準を設けると、いかに生成AIがパフォーマンスを出せるかということについては、
数学の例を挙げるといいのかなと思うんですけれども、
数学の未解決問題、こういう問題、こういう謎があって、この謎はまだ解けてないというのを数学の世界で未解決問題と言うそうですけれども、
その数学の未解決問題を次々と生成AIが解いているということが、2、3ヶ月前ですかね、もうちょっと前かな、話題になっていました。
なんだ、数学者の世界でも人間がしこしこと考えて数学の問題を解くという時代ではなくなりつつあって、
いかに生成AIの力を借りながら数学の問題を解くかと、未解決問題を解くかというのが数学の世界でも当たり前なのかどうかちょっと私、
その分野にいないのでわからないですけど、おそらく自分がその世界にいれば当然のようにそういう風に問題を解いていくだろうなと想像をします。
ただ、どうやってこの数学の問題を解いているか解かせているかという話を聞いたりしていると、
生成AIに問題を渡して、この問題を解いて、問題文をコピーペーストして渡して解いてもらうと、それほど簡単ではないようなんですね。
私が理解した範囲で、勉強した範囲でですけども、どうやって解かせているかというと、数学の問題があった時に解けた状態、この問題が解けたというのはどういう状態なのかということを
LLMにもわかるような言葉で言う方法というのがあるらしくて、Learnという言語で記述すると、LLMも人間もこれが問題が解けた状態だということがすごい明確にわかるんだそうです。
この数学の未解決問題を人間がこれが解けた状態であるという記述に変換する。これがゴールだよということを決めるということですね。
これがゴールだよということをちゃんと決めてあげて、それをLLMに渡して、こういう状態になるように頑張ってというと、LLMはめちゃめちゃ試行錯誤をしながらですね、
多分うまくいかないやり方もいっぱい試しては捨てってやっていると思うんですけれども、いろんな試行錯誤を重ねて、段々とそのゴールに近づいていって、最後ゴールにたどり着いたら解けましたよというふうに報告する。
まさに発想的にはハーネスエンジニアリングの発想の典型的なものだというふうに思います。
つまりですね、人間がいちいちあかんかったらこうして、それだったらこうしてっていうんじゃなくて、ゴールはこれですよというふうなことをLLMに明確に示して、
そしてLLMの方がゴールにたどり着く方法を自分たちで考えて、自分たちで考えてというか実際にはいろんな試行錯誤をして良さそうなものを残して、気合と根性で個体にたどり着くっていうのが正確なところだと思うんですけれども、
とにかくゴールに向かって生成AIが自律的にぐるぐるぐるぐる繰り返して頑張ると、その結果として人間が何十年と解けなかった未解決問題を解き始めているという現象というか事実というかことが起き始めています。
これがハーネスエンジニアリングのありがたみの一つですね。
テスト駆動開発と生成AIによるプログラミング
もう一個これはプログラミングとかコーディングの世界で起きていることですけれども、実はプログラミングの世界、コーディングの世界では、前からテスト駆動開発というやり方が確立されていて、
ものすごくざっくり言うと、どういう開発の仕方かというと、プログラムを作ってみてうまく動くかどうかを試すのがテストと呼ばれているものなんですけれども、
昔々の古来のやり方でいくと、プログラムを作ってその後でテストを書いて、期待通りに動いているかテストをするというのが人間が開発していた頃の中でも、人間がやっていた中でも昔々の話ですね。
本当の昔でいくとテストなんかなかったという時代があったかもしれませんが、それを言うときりがないので、昔々はプログラムを書いてそれが期待通りに動いているか後でテストするという時代がありました。
それが時代が新しくなっていくと、ワンステストを書いて、プログラムを開発するというのはまずテストを書いて、テストを書いた上で次にプログラムを書いて、そのプログラムはまずはテストに合格しない、ダメなプログラムをまず書くと。
ダメなプログラムをまず書くんですけど、それを改良して今度はテストに通るようにプログラムを書き換えていくと。
テストの通ってない状態、ダメな状態を赤信号で、テストがOKになった状態を青信号なので、そういう開発の仕方にだんだん変わってきて、赤信号、青信号にしていくので、レッド、グリーン、リファクターみたいな手順でプログラムを作っていきましょうみたいな手順が開発されていまして、
正しいプログラミングというのはテスト駆動型で開発するというのが非常にいいという風な手法が確立されていました。
ここで何が意外かというと、これをまるごと生成AIにもやらせられるようにする方法が今発達していましてですね。
ハーネスエンジニアリング的な世界観でいくと、今本当に簡単にテスト駆動開発での開発がものすごい簡単にできるんですけれども、
今こういうものを作りたいからこういう風にプログラムを書いてっていう話をすると、こんなアプリを作りたいから作ってくださいって言った時に、どういう風な手順で生成AIが開発するかというと、
まずこういう風なアプリを作るためにはこういう風にプログラムを作っていくといいですよねっていうプラン、計画というものを生成AIが書きます。
場合によっては大きなプログラムだと5段階で開発しましょうみたいな感じで、まずはこれを作ります、その次これを作ります、その次これを作りますみたいな、5フェーズに分けて、5段階に分けて作りますみたいな計画書を生成AIが書きます。
それを人間が読んで、こんな感じでいいんじゃない、こんな風に作ってよっていう風に承認すると、じゃあまず第一段階プログラム書きますって言って、生成AIが書き始めるわけですけれども、まず最初に生成AIはテストを書きます。
第一段階のプログラムができたっていうのは、こういう風なテスト、検品みたいなものですね、検査に通ればプログラムができたっていうことだから、OKになる条件ですね、テストが通る条件をまず書き始めます。
テストが書き終わったら、次は生成AIがプログラムを書くんですけど、これはまず雑なというかいい加減なというか初期的なプログラムしか書かなくて、まずはこのテストに通らないようなプログラムを書きます。
確かにテストに失敗してますよね、テストに失敗しているのはこういうところが原因だと思うから、ここを直してテストを通そうと思いますって言ってプログラムを修正します。
そのプログラムを修正したら、もう一回テストにかけてやってみます。
10個のテストがあったら、例えば今回は5個通ったけど5個は通りませんでした。5個グリーンで5個レッドでした。
じゃあ第3ループとして、さっき5個レッドだったところをどう直せばいいかというと、こういう風に直せばいいと思うので、直してみますねって言って3回目のループを回してプログラムを作ってまたテストをやると。
こういう風なぐるぐるを何回か回して、最終的に最初は全部10個レッドだったわけですけれども、今これでちゃんと10個グリーンになりました。プログラムはできたと思います。
第1段階のプログラムができました。では次の第2段階に行きますね。じゃあまずテスト書きますねみたいな感じで。
何が言いたいかというとですね、さっきの数学の問題を解くのとすごく似てますよね。
ゴールを与え、どういう風な状態にしたいっていうことをまず決めて、こういう風なテストを取ればプログラムができたということであるということを、これもあれですよ。
プログラムを書く場合は生成AIが自分で考えるんですけど、こういうプログラムをアプリを作りたいっていうことは、このテストが通ればできたっていうことですよねっていうテストも自分で考えて、
そのテストが通らないプログラムをまず自分で作って、テストが通らないプログラムの何が悪いかっていうことも生成AIが自分で分析して、次どういう風にプログラムを書けばいいかっていうことを考えて、
実際にプログラムを作ってみて、テストをやってみるっていうのもまた生成AIがやって、いくつかテストが通った、いくつかテストが通らないっていう状況を見て、どこを直せばいいかっていうことも生成AIが自分で考えて、また直すと。
全部のテストに通るところまで生成AIがぐるぐる何周もして、自分でテストを通るところまでいくと。テストが通るようになったもの、そういうプログラム、アプリっていうのは基本的には期待されたものに、当初作ろうと思ってたものに非常に近いものが作れているという状態になるということですね。
なんか音声で口だけじってて、プログラムができていく様子っていうのがどれだけ伝わるかっていうのはちょっと疑問なんですけど、ちょっと数学の問題と比例とも合わせて想像していただければと思う。
ハーネスエンジニアリングの本質と今後の展望
ポイントは細かいディテールではなくて、要は生成AIにこういうふうな状態になればいいんだよっていうことを明確に示す。もしくは生成AIに自分で考えさせて、こういうふうな状態になればいいと。そういうふうな状態になるまでどうやればいいかっていうのは自分で考えると。
グルグル回して試行錯誤してやるということをするのが、ざっくり言うとそういうことをするのがハーネスエンジニアリングで、そういうことをさせられるような環境とか状況とかやり口っていうのが、ここしばらくですごい進化してきたということです。
そういうことをやらせられるようになったエッセンスというか本質的なところっていうのはどこにあるかというと、生成AIが今まではのインプットをプロンプトエンジニアリングとかコンテクストエンジニアリングのときは、生成AIに何を渡すかっていうところをいかに工夫するかっていう話だったんですけど、
ハーネスエンジニアリングは出見た結果をどこかに書いておいて、アウトプットしてそのアウトプットをもう一回使ってインプットをもう一回回すっていうこのセルフフィードバックループみたいな、自己フィードバックループみたいなものをうまいことグルグル回せるようになったというところが大きいですね。
グルグル回せるようになるためには何が大きかったかというと、パソコンに書いてあるファイルに生成AIも自分で書けるようになって、生成AIがアウトプットを自分でパソコンに書いて、そのパソコンに書いてあるデータを読み取って、またグルグル回せるようにするというふうな仕組みに変えたところが大きかったというふうに捉えていただけると思います。
ということで、なかなか具体例のイメージが湧きにくいところもあるかもしれないんですけれども、エンジン周り以外の進化の3番目ですね。
ハーネスエンジニアリングができるようになったことで、具体的にどんな感じで生成AIが考えたり作業するようになったかということで、これができるようになったことで、グルグルが回せるようになったことで、数学の未解決問題を生成AIが解けるようになったり、プログラムコードっていうのを、アプリっていうのを生成AIが自分で作れるようになった。
自分があんまりあれこれやらなくてもプログラムを作れるようになってきたというところの話をしました。
ちょっと概念的というか、なるべく例を言ったつもりなんですが、実例を見ないとなかなかピンときにくいところがあると思います。
ですので次回はこのハーネスエンジニアリングを体験してみるにはこうするのがお勧めですよっていう話と、さらにこの後ハーネスエンジニアリングの先にどういう世界が待てそうかと、今足元でお聞きかけている変化について深掘りできればというふうに思っています。
16:51

このエピソードに言及しているエピソード

コメント

スクロール