生成AIの使いどころを見極める

生成AIの使いどころを見極める


こんばんは
daiiz daiiz (@daizplus) です
Helpfeel アーキテクト
設計、実装、ドッグフーディングの繰り返し

過去の登壇資料や書籍など

機械学習は大学で少しかじった程度
サポートベクターマシン
グラフ構造データの欠落ノード補完など
深層学習以降の話も追いかけているが詳しくはない

ChatGPT、熱いですね
ここ最近は毎日何かしらツイートしている
Current status: やっぱりよく分からん期に再突入
何卒しばらくお付き合いください!
ちょっとテンション高すぎるかもしれない、毎晩反省している

テンション高い話といえば
YAPC::Kyoto 2023でも今日登壇しているakiroomteramotodaikidaiizChatGPTのセッションをしました
参加者がお昼ごはんを食べている部屋で1時間くらい高速に話している
とても楽しいので今出川FMで聴いてください!


生成AIの使いどころを見極めたい
実際のところいまも模索中
今日時点での温度感をそのまま共有したい

直接的なプロダクトの話は少ないけれど
プロダクトを作るのはわれわれ開発者
開発者が試行錯誤してコツを掴むことは製品のうまい進化につながるはず
という視点から

初歩的なところから少しずつ深堀りしていく
予備実験的な位置づけの個人開発での事例を織り交ぜながら
いま熱いキーワードだけでも伝われば嬉しい


今日お伝えしたい
ウェブアプリエンジニアが生成AIとそのAPIの勘を掴むためにやったこと
そもそも存在に慣れる
ChatGPTのUI以外でも触れて本質を探る
検索タスクを考えてみる
生成AIの創造性をコントロールできるか、Helpfeelでいかに使っていくか
生成タスクを考えてみる


生成AIという存在に慣れる
Generative AI
正直な話、最初はかなり戸惑った
あらゆる考え方が根本的に変わる予感がした
モデルとの対話方法が独特で、いまだ体験したことがない感じ
APIでも自然言語でリクエストを出すとは思わなかった

生成AIという存在に慣れる
とにかく触って感覚を掴んでいくしかない
とにかく流暢に日本語を話して格好いい、英語もできる、コードも書ける
GPT-3.5 と GPT-4 を適材適所で使っている
なんだかんだ高速な3.5が便利ですね
4はマルチモーダルのパワーが解放されるのを待っている
Microsoftが提供するチャットUIの検索機能
検索結果の応答に文献の参照を含められていて格好いい
これも裏側はGPT
Googleが提供する生成AI
まだ試せていない

生成AIという存在に慣れる
大規模言語モデル(LLM)の仕組みの理解はいったん諦めた
まだこれからも大きく変わるだろう
全ての始まりになったTransformerはだいぶ凄いらしいけれど
モデルアーキテクチャごと変わる可能性すらある
時間があったら最後に少し補足

本質を探る
アプリ開発者にとっての旨味はどこにある?
ChatGPTのUIだけを見ていると「チャット」以外の使い道を思いつきにくいかもしれない
社内である日突然爆誕したML WorkingGroupでteramotodaikiに教えてもらった
これに触れてから、だいぶ鮮明な世界が見えてきた印象。感謝。
色々なモードがあるので一通り試してみるといい


興味ある題材で使ってみる
例: 毎日のブックマークを振り返る
シンプルに楽しむ。生成される文のテンションの差が激しくて面白い。
temperatureを変化させてみる
prompt
Copied!
注目記事に関するコラムを書きたい。

- Helpfeel Tech Hour Vol.1 LT ソフトウェアの設計と計測
- GPT-3におけるFew-Shot・Zero-Shot
- YAPC::Kyoto 2023ノベルティのPerl Poemを読み解く
(省略)

まとまりのある 独創的なストーリーを連想し、シンプルな世界記述をせよ。
これらの事象は順不同である。文の長さや文同士の繋がりが不自然に単調にならないよう注意せよ。下記の制約を満たし、結果のみ示せ。

制約:
- 記事のタイトルの文言をそのまま使わなくてもよい
- なるべく多くの記事を満遍なく参照すること
- 丁寧語を含めてはいけない

結果:



興味ある題材で使ってみる
例: 日本語のIMEを作れる?


興味ある題材で使ってみる
例: ジオコーディングできる?
結論としては、確率的にそれらしい経緯度を返しているだけ
有名な地名に関してはほぼ確実に正解している、何故なのか
prompt
Copied!
これから場所の名前を与えます。 代表点となる経緯度を返してくれますか?
結果のみを答えてください。

回答形式:
緯度数値,経度数値

でははじめます。


旨味が見えてきた
汎用的な知識を背景に持った高度な文脈理解力
自然言語処理を意識しなくても "いい感じ" にまとめてくれる
形態素、係り受け、抽象・抽出要約を理解しなくても使える
Fine tuningなしで満足いく精度が得られる
語彙が豊富な作文能力
あらゆる要求に応じた文章を書ける
文同士を滑らかに接続できる
高品質なEmbedding
埋め込み表現、特徴ベクトルとも言う
API
10年くらい前のマッシュアップブームの乗りを彷彿させる?

検索タスクを考えてみる
得意なフィールドで使ってみよう
生成AIで検索?


検索タスク: Few-shotでキーワード抽出
Bing AIの挙動を真似してみたい
このUIにヒントがある
ユーザーが入力した自然文から良さげな単語を抽出して検索していそう
Embeddingを使わずに既存の検索システムをいますぐ小さく改善できる!
キーワードで検索
自然文で検索

Few-shotで重要キーワードを抽出して検索
個人開発: 実際にやってみた
これまでは画像のメタデータ(概要文やOCR結果)テキストを入力として素朴に検索していた
特徴的なキーワードで検索したい

ChatGPT-3.5で解いてみる
キーワードに分解する例をいくつか見せてやると真似してくれる
prompt
Copied!
入力される自然文Xに関連する興味深い検索キーワードを複数推薦してください。
入力文Xに含まれない表現を連想して提示しても構いません。
厳選した8個〜10個を答えてください。
世界最高峰の検索エンジンBingでの結果を例示します。参考にしてください。
'X: 沖縄の国際通りで美味しい酒が飲めるお店 -> Y: "酒" "沖縄" "国際通り" "ランキング"'
'X: 美味しいパンケーキを食べたい -> Y: "パンケーキ" "美味しい" "朝食"'
'X: いますぐイクラ丼を無限に食べたい -> Y: "いくら丼" "無限" "レストラン"'
'X: 新しいパソコンでChromeを使いたい -> Y: "GoogleChrome" "インストール"'
例示力が試されている!

GPTの連想力をちょっと借りれるのも嬉しい
入力文に含まれない単語も推薦して検索対象範囲を少しだけ広げてくれる



準備
検索対象のドキュメントEmbeddingを予め計算しておく
1536次元
Retriever
クエリのEmbeddingの近傍にあるドキュメント郡を返す
ベクトルDBも熱い!
Reader
取得したドキュメントをさらに詳しく解釈していい感じの検索結果を生成する
より適切なものを選択
組み合わせて加工


ベクトル検索
個人開発: 実際にやってみた
私のブログ記事と対話できます daiiz
Retriever
OpenAIのtext-embedding-ada-002 APIを使ってEmbeddingを計算
近傍10件の記事を取得する
Readerに渡すための文章を選ぶ
入力トークン (≒ 単語) 数に上限があるため特徴的な一文+記事タイトルを使う作戦
各記事からクエリに最近傍の行Embeddingを取得する

Reader
ChatGPT-3.5にQAタスクを解いてもらう
さっきBing AIの文献注釈が格好いいと言ったけど、わりと簡単に実現できてしまった?
prompt
Copied!
これは自分(daiiz)のブログ探索システムである。
自分の投稿記事のリスト:
[a1] 2022-07-16: Google Lensで画像を検索\t似ている画像を探せて嬉しい
[a2] 2023-02-10: Bing\tMicrosoftが提供する検索エンジン
[a3] 2023-03-10: テキストと画像を使って検索する\tテキストと画像を組み合わたクエリも発行できる。
(省略)

質問:
画像と文字で検索できるやつ

制約:
次の2ステップで順にポジティブに考えよ。回答不能な場合は`N/A`と答えよ。
- 問題1. 質問の回答としてふさわしい記事を1~6個程度選び、記事番号をカンマ区切りで答えよ。
- 問題2. 選択した記事をすべて組み合わせて、記事の事実のみを端的に一段落の文章でまとめよ。それぞれの文の適切な位置に根拠となる記事番号を「[a0]」のように付記すること。文の接続が滑らかになるよう工夫せよ。また、時系列に注意せよ。
回答形式
- 問題1: ...
- 問題2: ...


Retriever-Readerモデルの考察
Retrieverに力を入れたい
やはり「検索」の領域は引き続き重要
ベクトル探索だけでなく、複合的な情報検索技術が求められる
「最近イオンで買った本は?」→ 時刻と位置情報の知識も必要
うまく構造化された知識データベースを持つことが大事

Readerも面白い
情報のまとめかたの探究
なるべく読む文字は減らしたい
この観点で、最近のGoogle検索の強調スニペットはうまいと思う

Render
勝手に提唱したい daiiz
自然文以外の見せ方ができるのではないか?
生成AIの威力を堪能できるのは対話UIが全てではないはず
ChatGPT Pluginsを楽しみにしつつ、Generative AI時代のUIも考えていきたい
UI with AI


生成タスクを考えてみる
Helpfeelでどのように使えるか?
元記事
二段階で支援
① 記事の本文の理解
質問文の素となる重要な記述を抜き出して端的にまとめる
② 質問文の作成(換言)と拡張
機械的に展開できるパターンを提案する
採否の判断はライターが行うため、質問文のクオリティはこれまでどおり維持される


意図予測支援ツール
文章理解と質問文生成の支援
難解な題材への理解の第一歩を補助する
短時間でバリエーション豊かな言い換えを高速に吟味できる
検索データとしてカバーできる語彙がさらに充実する
ライティングの専門家がより本質的な作業に時間を使えるようになる


生成結果の創造性のコントロール
生成AIのクリエイティブ度合いを制御するのが難しい
(一時的な単なる小手先テクニックかも)
細かく誘導問題を付ける
step by stepをさらに噛み砕いて誘導する
例: 「直前に求めたXを用いて、...」
期待する結果を丁寧に説明する
例: 「要約せよ」ではなく「事実は何か?」と問う
例示する
結局一番これが効く気がする

まとめ
検索と換言タスクでの実践的なアイデアを紹介した
得意なお題に引きずり込んで、とにかく手を動かしていこう
最先端のAIサービスに触れて勘を掴み続けよう
皆さんのアプリ開発で活用できる兆しが見えてきたでしょうか?




おまけ: それでもやっぱり生成AIのことを深く知りたい
このあたりの本を読んでいる daiiz
Transformerを画像の認識や生成タスクにTransformerを適用したモデル
ViTの実装のひとつであるCLIPも熱い
画像のEmbeddingが得られて嬉しい!
テキストと動画像の研究領域で互いに進化しあっている気がするので、画像の方も追いかけている
生成AIの知識を体系的に勉強できる
想像以上に本気な学術書だったので唸りながら読んでいる
論文に出てくるような数式を読み解けるようになる

おまけ: GPT登場以前の社内での機械学習関連の研究
BERTT5モデルを使った実験に取り組んでいた
要約、文章変換
おなじみの [MASK] での穴埋め問題
抽出要約、抽象要約
類義語を用いた質問文の機械展開
文章ベクトルでの検索とクラスタリング
精度がいまいちだった
Fine Tuningするとそれなりの結果が得られるようになった
対象の業界が増えたり時代が進むたびに定期的にモデルを調整しないといけない
運用コストに見合わないような?
勉強に使っていたおすすめ本 daiiz
Powered by Helpfeel