ほとんどのソフトウェアエンジニアがそうだと思いますが、最近よく日常の業務に AI を活用する方法について考えています。MATLAB の文脈では、友人で同僚のTakeushi さんが開発した非公式の
MatGPT で楽しんでいましたが、それだけでは物足りなくなってきました。その後、ディープラーニング担当チームが GitHub上でオープンソースの
LLMs to MATLAB をリリースしました。
Stage 1: これ好きじゃないかも・・
ある時、担当者の Hans Scharler との会話中に彼が初期のプロトタイプを紹介してくれました。「これについてどう思いますか?」と。
当時、クラスタリングに関連するプロジェクトに取り組んでおり、さっそくその作業についての質問を試してみました。いくつかの点ではうまく答えていましたが、明らかにでたらめな回答もありました。存在しない MATLAB の関数を使用したコードを生成したり、存在しない論文を引用していたり・・いまいち。
「回答が信用できないし、これがなんの役に立つのかわからない・・」
その後の一日中、AI が出してきた間違いを Hans に指摘し続けました。正直、私たちがまだ友人なのが不思議なくらいです。
Stage 2: まぁ、、ちょっと楽しいかも
プロジェクトの開発は続き、Hans は MathWorks 社内で興味を持っている人のためのミーティングで内部デモを行うまで、私に話題を持ちかけてくることはありませんでした。そのミーティングには参加していませんでしたが、ミーティングのチャットからメッセージを受け取り、誰かが投稿したコードに興味を持ちました。
私はミーティングに飛び込んで、最新バージョンのアプリを使い始めました。今回はまったく異なる心構えで取り組みました。何ができるのか、できないのかに対する単純な好奇心で、今回は魅了されていきました。
以下は当時の初期のクエリの一つです。スクリーンショットなので、残念ながらコードをコピー&ペーストすることはできません
そのコードを実行すると、私が想像していたその結果が得られました。
その後、猫の絵を描いてもらうようにお願いしてみました。その回答はちょっと文字通りというか・・。
もう一度試してみます。
rectangle(‘Position’, [0.5 1 2 2], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
rectangle(‘Position’, [0.5 2.5 0.5 0.5], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
rectangle(‘Position’, [2 2.5 0.5 0.5], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
rectangle(‘Position’, [1 1.5 0.5 0.5], ‘Curvature’, [1 1], ‘FaceColor’, ‘w’);
rectangle(‘Position’, [2 1.5 0.5 0.5], ‘Curvature’, [1 1], ‘FaceColor’, ‘w’);
rectangle(‘Position’, [1.25 1.75 0.1 0.1], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
rectangle(‘Position’, [2.25 1.75 0.1 0.1], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
line([1.75 2.25], [1.75 1.75], ‘LineWidth’, 2, ‘Color’, ‘k’);
line([1.75 1.75], [1.75 1.5], ‘LineWidth’, 2, ‘Color’, ‘k’);
line([1.5 2], [1.25 1.25], ‘LineWidth’, 2, ‘Color’, ‘k’);
何とな~くやりたいことは分かりますが、猫には見えないですね。目と口の位置が怪しいです。修正してもらうようお願いしてみます。
rectangle(‘Position’, [0.5 1 2 2], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
rectangle(‘Position’, [0.5 2.5 0.5 0.5], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
rectangle(‘Position’, [2 2.5 0.5 0.5], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
rectangle(‘Position’, [1 1.75 0.5 0.5], ‘Curvature’, [1 1], ‘FaceColor’, ‘w’);
rectangle(‘Position’, [2 1.75 0.5 0.5], ‘Curvature’, [1 1], ‘FaceColor’, ‘w’);
rectangle(‘Position’, [1.25 1.95 0.1 0.1], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
rectangle(‘Position’, [2.25 1.95 0.1 0.1], ‘Curvature’, [1 1], ‘FaceColor’, ‘k’);
line([1.75 2.25], [1.75 1.75], ‘LineWidth’, 2, ‘Color’, ‘k’);
line([1.75 1.75], [1.75 1.5], ‘LineWidth’, 2, ‘Color’, ‘k’);
line([1.5 2], [1.35 1.35], ‘LineWidth’, 2, ‘Color’, ‘w’);
何かの賞を受賞するような作品にはなっていませんが、方向性はいい感じです。私が試したこと・・気が付きました?
まさにプログラミングですね。最初に試してみた猫の絵から始まって、徐々に没頭してしまいました。AI と共同で書いた、半分完成したインベーダーゲームの MATLAB 版もあります。認めたくないほど楽しかったです!
Stage 3: リスクのない状況で練習してみる
Adam のコードを AI に与え、三角形に色をつける方法を教えてもらうように頼んでみました。
実際には、このケースでは AI がコードを書くことはできませんでしたが、代わりにいくつか提案をしてくれました。まさにパートナーシップのような感覚。以下がその
結果です。
Stage 4: 実際の業務でAIを使用する
まだ完全にステージ 4 とはいきませんが、最近は実際の業務でも AI を活用し始めています。例えば、AI を使用してループをベクトル化するヒントをもらったり、データの分析方法を提案してもらったり、自分のコードのバグ修正の手助けをしてもらったり、書きたいデモのたたき台を提案してもらったりするためにも使用しました。
試行錯誤を続ける中で、AI 自体が改善されるにつれて、自分自身も成長しているように感じます。現在使用できる AI は、今後経験するであろうものに比べると、最も低レベルなバージョンであることを念頭に置いておくといいと思います。実際 ChatGPT が昨年末に導入されて以来、かなり進化してきました。
Over to you
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.