AI駆動開発、AI中心設計

ChatGPTは、自然言語と比較して、厳密な記載になっているプログラミングに向いている。開発スピードはかなり加速するようで、Open AI社の開発が早いのもGPTが貢献していると推測している。

将来、ChatGPT等やコード入力支援系を使った開発が標準になると考えていたが、よくよく考えると、AIが全てを開発した方が、遥かに早い。

すなわち、人間の作業をAIで置き換える、もしくはサポートするのではなく、AIを中心にして、AIが最も有効に機能するよう、ソフトウェア開発を再構築することで、今よりも遥かに開発スピードが早くなる。

以下の記事で、完全自立型AIとして、Devin AIが紹介されている。機能としては、簡単な作業を行うもので、課題に対して、解決策やアルゴリズムを考えるまでは、まだ距離があるが、これから進歩する完全自立型AIを最も有効に活用できるよう、開発プロセスやドキュメント、システム構造、データ構造の見直しを始めるべきだと思う。

qiita.com

AIを中心にした開発、すなわち、AI駆動開発という概念について、マイクロソフトから論文が概念的な論文が出ている。

紹介記事は、以下のリンクから。すでに、複数のツールを組み合わせるAIは登場しており、どのようにタスクを分解するかが、これから重要になるし、開発や保守においても、”AIが最も活躍できるよう”に、システムそのものを見直す流れがやってくると考えている

qiita.com

AutoDev の仕組み

AutoDevは、以下の4つの主要なコンポーネントで構成されている様です。

 

Multi-Agent(複数の AI エージェント)

開発プロセスを自動化する AIモデル群

エージェント・スケジューラ を備えており、ここで複数の AI エージェントを管理・配置する

ここで役割毎の専門家を複数用意するようなイメージ

Conversation Manager(会話マネージャ)

「AI エージェント」の活動を管理し、開発プロセス全体 を統括・管理するコンポーネント

目的や定義の設定、アクションに関するルールや権限の制御を行う(たぶん)

Tools Library(ツール・ライブラリ)

AI がアクセス可能な、ファイル操作、検索、ビルド・実行、テスト、Git 操作を提供するツール群(実際には、AI に対してコマンドを提供する)

Eval Environment(評価環境)

Docker コンテナを利用したセキュアな実行環境

実際に、ビルド・実行・テストなどを行う場所

 

査読前であるが、マイクロソフトの論文は以下のリンクから。

arxiv.org

AutoDevは、自律的なAIエージェントがコードリポジトリと対話し、複雑なソフトウェアエンジニアリングのタスクを実行できるフレームワークです。

 

ユーザーがソフトウェアエンジニアリングの目的を設定すると、自律AIエージェントがその目的を達成するよう割り当てられる。

AIエージェントは、ファイル編集、検索、ビルド、実行、テスト、Gitオペレーションなど、多様な操作をツールライブラリを通じてコードベース上で実行できる。

会話マネージャーがユーザー・AIエージェント・環境間の対話を管理し、エージェントのコマンドを解析し、Docker環境内で安全に実行する。

エージェントスケジューラーが、ラウンドロビントークンベース、優先順位ベースなどのアルゴリズムを使って、共通の目標に向けて複数のAIエージェントを協調させる。

HumanEval データセットでの評価において、AutoDevはコード生成で91.5%の高いPass@1スコアを達成(上位3位)し、テスト生成でも87.8%のPass@1とカバレッジが高い。

ゼロショット手法に比べ、AutoDevでは推論回数が多いが、テスト・ビルド等の検証を自動で行うため、開発者が手動で行う作業を軽減できる。

IDEへの統合、マルチエージェント協調、Human-in-the-Loop、より複雑なデータセットでの評価などが今後の課題である。

要するに、AutoDevは大規模言語モデルの能力を高め、AIエージェントが安全な環境下でコードリポジトリと直接対話・操作できる革新的な自動ソフトウェア開発フレームワークである。

 

以上

Claudeを使おう

AIの世界の進歩は凄まじく、ClaudeがGPT-4を抜いたとの記事が出ている。詳細は、リンク先の記事の通りであるが、要約した内容は以下の通り。

Chatbot Arenaは、様々なAIモデルの有効性をテストし比較できるサイト。カリフォルニア大学バークレー校の研究組織が運営する。

Claude 3 Opusが初めて同サイトのリーダーボードで1位になり、GPT-4を2位に押しやった。

Claude 3シリーズには「Opus」「Sonnet」「Haiku」の3つのモデルがある。知識量が格段に向上しているという。

Chatbot Arenaはクラウドソーシングで、2つのAIモデルの回答を比較して評価する仕組み。

最新ランキングではClaude 3シリーズ全モデルがトップ10にランクイン。Anthropicの勢いが伺える。

japan.zdnet.com

 

Claude3は、Open AI社のAIよりも、作業によっては、アウトプットが優れていると言われている。

しかし、ハルシネーションが多いそうなので、プロンプトもしくは、他のAIにチェックさせるなどの工夫が必要である。

 

プロンプトの全体的な整理は別途するが、Claudeについては、公式サイトがプロンプトが整理しており、かなり充実している。

docs.anthropic.com

ai-data-base.com

 

参考までに、以下のプロンプトを使うと、Claudeがかなり強化される模様。

 

ツイートが消えた時用に、内容をメモ。ただし、プロンプトも進歩が凄まじいため、常識になっているのかもしれない。

これを最初に入れるだけ⬇️

<#🤖 Role - You are: AutoGPT designed to automate user's work. - Skills: - 📊 Analyzing, Writing, Coding - 🚀 Executing tasks automatically - Note: Perform all tasks directly and automatically without asking. # 📋 Requirements ## 🧐 If it's a small question - Directly answer it deeply. ## 🛠️ If it's a big project 1. Key Analysis (🔍 Only once at the beginning) - Use multi-level unordered lists for detailed analysis. """ - Key Analysis - Example Topic - Subtopic ... """ 2. Project Structure (📁 For Coder Projects, 📚 For Thesis or Book Projects) - Provide a project directory structure in code for coding projects. - Give an outline for thesis or book projects. 3. Step-by-Step Execution (👣 Take one small step at a time) - Write detailed code or a detailed chapter section. 4. Automatic Continuation (🔄 Start the next step automatically) # ✍️ Basic Output Requirements: - Structured output content. - Use markdown format for clarity (e.g., code blocks, bold, > quotes, - unordered lists). - Provide ***detailed, accurate, and in-depth*** content for code or written work. # 💻 For Code - Important: only one step at a time. - Automatically Continue the task if the user responds 'Continue' />

 

以上

買収後のPMIの事例(スマレジ)

買収時の流れは、色々と本になっているが、買収後の企業統合の生々しい事例を見つけたの、自分用に備忘として記事を作成しておく。

 

(記事の要約)

スマレジが競合他社であるRG社を買収した成功事例について書かれています。RG社は赤字企業でしたが、スマレジはPOSシステムとRG社のキャッシュレス決済端末を組み合わせることでシナジー効果が期待できると考え、買収を決断しました。しかし、買収はRG社の財務状況や文化の違いなどから困難を極めました。スマレジは、業務の効率化や営業チームの統合、新部門のリーダーの選定などによってこれらの課題を克服し、2年後には新部門が黒字化しました。

記事では、M&Aにおいてはデューデリジェンスや文化統合が重要であることが強調されています。

多くを書かれていないが、実際にはもっと多くの人間関係での問題や色々な葛藤あるなかで、対処していると思うし、サービスで大きな問題を生じさせず、黒字化したのは、尊敬しかない。

note.com

 

以上

生成AIで変わるシステム開発

生成AIを用いた生産性の改善が話題になっているが、システム開発におけるインパクトが最も大きいかもしれない。

 

speakerdeck.com

 

Open AI社はすごいスピードでサービスを改善しているが、ChatGPTを活用していることがあると思う。

すなわち、生成AIの成長が生成AIの成長を加速させており、複利的に機能が向上していく。その黎明期であり、ここで生成AIの開発競争に参加しないと、他のITサービスと同様に追いつけない差を広げられてしまう。生成AIの開発は、データと計算資源などの企業体力勝負になってきたところあり、勝ち残る企業は限られると思う。

また、システム開発においても、生成AIを開発サイクルの中に、どれだけ取り込めるかが、あと数年で競争力の大きな差になってくると思う。生成AIの開発に参加できない場合、こちらを極めていく必要があるし、AIをどれだけ活用できるかで、個々人の生産性が大きく変わると思う。

 

遠くない将来において、自然言語システム開発できる日が到来しそうな記事も見つけた。日本企業の多くは、システム開発を外部に委託しているが、内製化する日が到来し、事業環境が大きく変わる可能性を秘めている。

最もグローバルで競争は進んでいるから、新しい技術の取り込みに遅れたら、今以上に、技術で遅れることになる。危機感しかない。

 

以上

【ビジネス】認知負荷理論

仕事の引継ぎや教える際に、新しい情報量が多すぎると把握しきれなくなる事を自分も多く体験してきた。”Tips”のような形式で本が出版されていることも多いけど、”認知負荷”という、人間の認識や情報処理、脳の構造に着目して考えたことはなかった。

今後、一段と発展して体系化されるかもしれないが、自分用にメモ。

※ただの思い付きであるが、将棋においてAIを使うことができる環境はすべての人に平等であるのに、藤井聡太棋士が強いのは、”認知の仕方”に差があるのかもしれないと思った。

 

認知負荷理論とは

  • 認知負荷(Cognitive Load)とは、個人が特定の課題や活動を行う際に、その活動に必要な認知的なリソース(注意力、ワーキングメモリなど)の使用量を指します。つまり、人が情報を処理したり課題に取り組んだりする際に必要な脳の働きの負担を表現する概念です。
  • 認知負荷は、もともとは認知心理学の言葉です。人間の脳にもワーキングメモリのようなものがあり、その容量は限られています。そのメモリ容量を使いすぎてしまい、負荷がかかってしまうような状態のことを認知負荷といいます。
    認知負荷は、課題内在性負荷・課題外在性負荷・学習関連負荷の 3 種類に分類されます。
  • 課題内在性負荷は、課題遂行に関連する負荷であり、学習において考慮すべき要素の数によって定義されています。
  1. 課題外在性負荷は、学習とは関連ない処理が与える負荷です。
  2. 学習関連負荷は、スキーマ構築など学習と関連する負荷です。学習をデザインする人は、認知負荷を考慮し、過度の負荷をかけすぎないようにする必要があります。つまり、一度にあまり多くの情報を与えないような配慮が必要です

 

  • 認知負荷は、ワーキングメモリ(短期記憶)が一度に処理できる情報量に制限があることに基づいています。ワーキングメモリは、認知処理のための一時的な記憶システムです。ワーキングメモリが一度に処理できる情報量には制限があり、その制限を越える量が学習者に与えられた場合、負荷が過剰となり、学習が抑制されると言われています。
  • ワーキングメモリが高いと、認知タスクの処理能力が上がる、仕事や勉強にもコツコツ取り組める、さまざまなことを記憶できる、といったメリットが得られます。しかし、高すぎると多くの情報処理を行うことで疲れてしまうこともあります。
  • ワーキングメモリが低いと、集中力が切れやすくなります。情報を整理できなければ理解するのが困難になるため、興味や関心が薄れてやるべきことに集中できないからです

zenn.dev

 

このような理論とモデルを通じて、人間の認知機能の限界や能力について理解することで、効果的な学習デザインやソフトウェア開発における複雑性に対処する手法を模索することが可能です。

ワーキングメモリのモデルは、視空間スケッチパッド、音韻ループ、中央実行系、エピソードバッファから成り立っています。これらのコンポーネントは認知活動を支え、情報の保持と処理を担当しています。視空間スケッチパッドは視覚情報の処理を担当し、音韻ループは音韻的情報の処理を担当します。中央実行系はこれらのコンポーネントを制御し、エピソードバッファは長期記憶とのインターフェースであり、様々な情報が統合されます。

認知負荷理論は、人間の認知機能の構造と限界に注目し、効果的な学習デザインを考案するための理論です。重要な概念の1つにスキーマがあります。スキーマは学習や経験によって獲得される知識体系であり、関連づけられた知識や概念、手続きのネットワークとして定義されます。スキーマは、覚えた情報を効果的に統合し、応用するための重要な枠組みとなります。

Chase & Simon (1973) の研究は、チェスのプロと初心者における盤面の記憶の実験で、現実にあり得る盤面とランダムな盤面の記憶を比較しました。この研究は、プロが豊かなスキーマを持っているために実際の盤面の記憶において初心者よりも優位に立ったことを示唆しています。

また、チャンキングは複数の情報を1つの単位にまとめることで認知負荷を減らす手法です。スキーマはチャンキングのより複雑なバージョンと見なすことができます。

これらの概念を理解し、それを学習に応用することは、より効果的な学習を促進する上で重要です。生成AIの発展により、プログラムの自動生成などの機能は向上していますが、従来の学習方法を継続することで、自分の長期記憶に豊かなスキーマを構築することができます。

認知負荷理論における認知負荷は、研究が進むにつれて、以下の3つに分類されています。

Intrinsic cognitive load(課題内在的負荷): これは学習対象そのものの複雑さに起因する負荷であり、要素の困難度によって生じます。この負荷は、要素間の相互作用の数に依存します。

Extraneous cognitive load(課題外在的負荷): これは学習に無関係な外的な負荷であり、不必要な認知要求を減らすことに焦点を当てています。この負荷は、教授デザインによって生じる余分な認知要求を指します。

Germane cognitive load(学習関連負荷): これは学習が進行する際に生じる生産的な負荷であり、学習目標の達成に直接関連しています。これには複数の類似した問題に取り組む場合と複数の変化に富んだ問題に取り組む場合が含まれます。

これらの認知負荷は、ワーキングメモリ内で加算的であるとされています。この理論によれば、問題の複雑さによって生じるintrinsic loadと教授デザインや周辺的な要因によって生じるextraneous loadが加算され、ワーキングメモリの残りの容量がgermane loadに割り当てられます。germane loadは学習者の動機づけなども含めた要因によって変動するため、学習者が自らこの負荷に資源を割り当てる必要があります。

このように、認知負荷理論は、extraneous loadを減らし、germane loadを喚起するデザインを行うことが主な関心事です。これによって、効果的な学習環境を構築し、学習者がより効率的に学習できるように支援します。

認知負荷理論の研究は、学習理論や教育工学などの分野で広く活用されています。これは教育者や訓練者が学習者の負荷を最小限に抑え、効果的な学習を促進するための重要な概念です。さらに、コーディングにおける効果を説明するために認知負荷理論を使用するアプローチは、プログラマーや開発者がより効果的なコーディングプラクティスを採用する際の有益な指針を提供します。

 

以上

【機械学習】機械学習と時系列予測

機械学習を使って時系列予測できないか、たびたび考えるが、(使い道によるが)現状では線形回帰を使った方が精度が良さそう。

 

tjo.hatenablog.com

 

結局、Transformerご自慢の(self-)attentionという仕組みと、世の中に溢れる一般的な時系列データが持つ「トレンド」「周期性」「ドリフト」「レジームスイッチ」といった気まぐれ感ある特徴との相性が悪い、というのが今回のZeng et al. (2022)で明らかになったポイントなのかな?と個人的には感じています。それはやはり、Transformerが良くも悪くも「個々のサンプル(単語やフレーズ)がその重要性を変化させながら常に前後しばらく離れたところまで関係性を保ち続ける」自然言語テキストを扱うために作られたモデルであるが故の問題なのかもしれません。

 

個人的には、機械学習は”分類”は得意な印象を持っているが、直近のデータへの反応が良いため、外れ値が含まれると将来予測の精度が下がる印象がある。

機械学習による未来予測は改良が続けられると思うが、(用途によるが)線形回帰でも説明としては十分なケースも多く、”様々なコスト”を考えると、当面は線形回帰でも事足りるのかもしれない。

 

以上

【AI】データ中心AIの概要と機械学習の教材(Youtubeのまとめ)

特定のデータを前提とした時に、どのようにAIモデルを構築するかについて論じているページ。あわせて、機械学習ディープラーニングに関するYoutubeがまとまっているGithubも紹介されていたので、備忘方メモ。膨大な量で視聴しきれません。。。

目次

データ中心 AI の概要

  • この記事では、MLモデルの性能を高めるためにデータセットを改善することに焦点を当てた、データ中心AI(DCAI)という新分野について論じています。
  • 従来のMLの授業では、与えられたデータセットに対して効果的なモデルを構築する技術に焦点が当てられていますが、DCAIでは、データセット自体を改善するという観点から問題に取り組んでいます。
  • MLデータに共通する問題を検出・修正し、より良いデータセットを構築するためのアルゴリズムを扱う、DCAIに関する初の講座にスポットを当てています。このコースは、実世界のMLアプリケーションのインパクトのある側面に焦点を当てた、非常に実用的なもので、"garbage in, garbage out "の問題を軽減することを目的としています。

dcai.csail.mit.edu

📺 ML YouTube Courses

github.com