# JMRA seminar 2023
## 生成系 AI を利用したリサーチ業務の応用について検討
---
### AIによって職を失う?
- 技術転換により旧職種が失われ、新職種が誕生してきた
- (冷蔵庫) 氷屋 -> 電気屋
- (車) 馬車乗り -> 運転手、車販売
- (IT) 事務職 -> プログラマ、SE
- AIでも同じことが起きる
× 今の職種に固執
○ 「AI関連で働いています」
---
### AIとともに働く
- AIの得意・不得意を知り、人間が補う
- 人間とAIの共働をコントロールするのが「AI職」
---
### AIとの分業のバランス
1. 一型
人だけで仕事をする
2. T型
人がやっていたことをAIが効率化する
3. O型
人ができなかったことをAIが可能にする
4. 逆T型
AIができないことを人が手伝う
5. I型
人の仕事をAIが完全に代行する
---
### 一型の仕事
- 人だけで仕事をする
- 従来どおりの業務
- マネジメント・管理
- 人を管理する
- 会社を経営する
- クリエイティブ
- デザインする
- 創作する
---
### T型の仕事
- 人がやっていたことをAIが効率化する
- AIによる代行・補助
- 接客・営業
- 教育
- 企画・ライティング
- ソーシャルワーク
- AIの得意・不得意の把握により業務効率が向上
- 接客用ロボにできる対応は?できない対応は?
---
### O型の仕事
- 人ができなかったことをAIが可能にする
- 高度な専門業務
- 予測分析業務
- 医療、看護、弁護士、会計士
- 例) AIによるがんの画像診断
- 例) 過去の判例から裁判の判決を予測
- AIによって可能になることで、価値が高いものは何?
-> 深い業務知識 + AIの知識 が必要!(文系AI人材)
---
### 逆T型の仕事
- AIがメインで業務を行う(人は補助に回る)
- データ入力
- 音声文字起こし、翻訳
- 電話応答
- 運転、運搬
- 自動運転技術
- 荷分け、配送
- AIはたまに間違える
- AIはイレギュラーな業務が苦手
- 人間が苦手をフォローする
---
### I型の仕事
- 人の仕事をAIが完全に代行する
- 「AIによってなくなる仕事」の可能性
- 注文・会計
- コンビニ、スーパー、レストラン
- 監視
- 異常検知、不良品検出
- 「行動格差」の時代
- AIとの共働スキルを習得しましょう
---
### AIを作る?使う?
#### AIを作る
- カスタマイズ性が高いが、構築・維持にコストがかかる
| GUIベース | コードベース |
| --- | --- |
| Google Cloud AutoML | Google AI Platform |
| Azure Machine Learning Studio | Azure Machine Learning |
| DataRobot | Amazon SageMaker |
- GUIベースなら、コードを書かなくても簡単にAIを作れる
---
### AIを作る?使う?
#### AIを使う
- カスタマイズ性が低いが、導入・運用にコストがかかりにくい
- GPT (文章生成)
- Vision AI (画像認識)
- Natural Language API (文章理解)
- Amazon Transcribe (音声文字起こし)
etc...
---
### AIと共働する力を身につける
1. AIの基本を覚える
2. AIの作り方をざっくり理解する
3. AI企画力を身につける
4. AI事例を知る
---
### AIの基本を覚える(AIの分類1)
- AI/機械学習/ディープラーニングの違い
- AI
- 人間と同等の知能を実現しようとする技術全般
- 機械学習
- 学習により特定のタスクを実行するAI
- ディープラーニング
- 人間の神経細胞を模した構造を持つ機械学習
- ニューラルネットワーク
---
### AIの基本を覚える(AIの歴史)
- 1950年代〜(第一次AIブーム)
- 推論・探索
- ゲームや数学の定理証明
- 1980年代〜(第二次AIブーム)
- エキスパートシステム
- 膨大な専門分野の知識をAIに与える
- 機械学習の登場
- 学習に人のサポートが必要
- 2000年代〜現在(第三次AIブーム)
- ディープラーニング
- 機械自身が学習する
---
### AIの基本を覚える(AIの分類2)
- 教師あり学習/教師なし学習/強化学習の違い
- 教師あり学習
- 人が分類済みのデータで正解を教える(アノテーション)
- 例) 画像認識、音声認識
- 教師なし学習
- 正解を教えず、AIが自らデータを分類
- 例) クラスタリング、次元削減
- 強化学習
- より良い行動を取ることで報酬を得る
- 例) ゲーム、ロボット、自動運転
---
### AIの基本を覚える(AIの分類3)
- 識別系/生成系/会話系/実行系
- 識別系
- 画像認識、音声認識、文章理解
- 生成系
- 画像生成、文章生成
- 会話系
- 実行系
- 身体・物体を動かす
---
### AIの基本を覚える(用語)
#### 学習と推測
- 学習
- データを与えてAIに法則性を見出してもらうこと
- 予測
- 作ったAIモデルにより、未来のデータを予測すること
#### 目的変数と説明変数
- 目的変数
- 予測したいデータ
- 説明変数
- 予測するためのデータ
---
#### アルゴリズム
- 計算のしくみのこと
- AIの文脈においては、学習の仕方のこと
- 機械学習のアルゴリズム
- (教師あり)線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、SVM etc...
- (教師なし)クラスタリング etc...
- ディープラーニングのアルゴリズム
- CNN、RNN、LSTM、GAN、DQN、ResNet、etc...
- 使ったアルゴリズムによって、得意・不得意が分かれる
---
#### 過学習
- 既知のデータに過剰に最適化されてしまうこと
- 未知のデータに対しては、うまく予測できない
- 防ぐには...
- データの量を増やす
- データの偏りをなくす
- 学習可能なパラメータを減らす
- 正則化 etc...
---
#### 時系列モデル
- 時間の経過によって変化するデータを扱うモデル
- 未来のデータを予測する
#### 正解率/再現率/適合率
- 正解率
- 全体のうち、AIが正解した割合
- 再現率(True Positive Rate)
- 答えが○のうち、AIが○と予測した割合
- 病気の予測
- 参考) AUC
- 適合率
- AIが○と予測したうち、答えが○の割合
- 万引きの検出
---
### AIの作り方を理解する
- データ作成
- 何に対して予測するか(KEY)の決定
- 説明変数・目的変数の決定
- データの収集・前処理
- 学習
- AIモデルを構築
- モデルの精度を検証
- 予測
- 未知のデータをAIのモデルに投入し、実行
- AIは法則性に基づいて予測(意味を理解しているわけではない)
---
### AIの作り方を理解する(データ作成)
- 目的変数
- AIに何を予測してもらいたいか
- 説明変数
- 目的変数に関連していそうなものを選ぶ
- データとして確保可能か確認する
- どの期間のデータを使うか決める
- データを収集する
- データの前処理
- 欠損値の処理
- 外れ値の処理
- 正規化 etc...
---
### AIの作り方を理解する(学習)
#### AIモデルの構築(GUIベース)
- 使用するツールサービスを選ぶ
- モデルを検証する
- 予測したいデータに対して精度はどうか
- AIモデルを実行する
- 未知のデータを投入し、予測してもらう
- 運用・改善を繰り返す
- データが古くなったら、新たなデータで再学習する
---
### AI企画力を身につける
- [WHO]
- 誰のためのAIなのか
- [WHY]
- なぜAIを使うのか
- [WHICH]
- どのようなAIを使うのか
- [WHAT]
- AIに何をさせるのか
- [HOW]
- どうやって分業するのか
- [WHEN]
- いつまでにAIを用意するのか
---
#### WHO
- 誰のためのAIなのか
- 顧客
- 取引先
- 従業員
---
#### WHY
- なぜAIを使うのか
- マイナスを減らす
- 不便、不満
- コスト、作業時間
- プラスを増やす
- 便利、満足
- 売上、付加価値
---
#### WHICH
- どのようなAIを使うのか
- 予測
- 識別
- 会話
- 実行
---
#### WHAT
- AIの名称
- AIができること
- AIが解決すること
---
#### HOW
- どうやって分業するか
- T型?O型?...
---
#### WHEN
- どう用意するのか
- 作る?使う?
- いつまでにAIを用意するのか
- スケジュールを決める
---
### AI事例集(流通・小売)
#### AIカメラでユーザー識別による販売促進と欠員補充
- トライアルカンパニー(福岡)
- ディスカウント業態を中心に展開
- ディスカウントストア内に700台のAIカメラを設置
- AIカメラでは
- 人の動き、商品棚を分析
- 性別、大型カートを持っているかなどの識別
- 店内サイネージに最適な広告を表示
- 欠員管理・補充などの従業員作業の効率化
- オリジナルのAIカメラも開発
- スマートレジカートの導入
c.f.) JCBのAIによる保険営業の支援、京東(JD.com)のロボットレストラン
---
#### AIによる新規出店予測
- ローソン
- 既存店舗の売上データを分析
- AIが人口・居住世帯の傾向・交通量・病院・学校などのデータを学習
- 一日あたりの売上高を予測
- 予測結果をもとに、新規出店の判断を行う
---
#### コンビニの節電
- 同じくローソンと、三菱商事
- 電力需要の予測AIで各店舗に節電を指示
- 過去の電気使用状況・天気予報から学習
- 店舗の照明・空調の集中制御
- 参加各店舗(約5000店舗)のタブレットに通達し、自動で節電
- 年間数億円の電気代削減
---
#### 似合うメガネのリコメンド
- JINS
- ディープラーニングを活用し、JINS BRAINを提供
- 3000人のスタッフによる30万件のデータの評価を学習
- **似合い度判定サービス**
- 上野店には大型のスマートミラーを設置
c.f.) みずほ銀行のパーソナライズドサービス
---
### AI事例集(EC・IT)
#### 類似アイテム検索機能
- ZOZOTOWN
- 閲覧中の商品の形・質感・色・柄などの特徴を抽出
- AIが類似アイテムを検出、一覧表示
- キーワード検索だけでは商品に辿り着けないシーンをカバー
- 利用ユーザーの滞在時間が4倍に
---
#### チャットボット「マナミさん」
- LOHACO
- 導入初期のチャットボットの利用率が低かった
- 「マナミさん」で利用率を改善
- 電話・メール含む問い合わせ総数の5割を対応
- オペレータ換算で10人月分の業務を削減
- 業務時間外も対応可能
- ルールベースのしくみ
- 入力された問い合わせにマッチする回答を選び出す
- ヒット率の目標は92%
c.f.) LINEのレストランの予約対応を行うAIサービス
---
### AI事例集(ファッション)
#### SNSからのファッショントレンド予測
- Heuritech(仏)
- ルイヴィトン、ディオールなどのファッション関連企業が顧客
- SNSやブログなどの毎日の投稿を分析
- 写真・テキストデータからブランド・商品・インフルエンサーを抽出
- ファッショントレンドを予測するAIを開発
- スカートの売上が12%増加した例あり
---
#### 動画内の着用類似商品検索
- The take AI(米)
- 動画にいる人物を検出、その人物が着用している衣類を検出
- 似ているアイテムを表示する
- 人物ごとに表示可能
- アイテムを購入できるアプリを提供
---
#### 需要予測による在庫圧縮
- ストライプ
- アースミュージック&エコロジーを展開
- 値引率が14ポイント減少
- タイムセール時間が4割減少
- 店舗ごとの商品配分を8つに細分化
- 従来は「都心型」「郊外型」の2つのみ
- 在庫を8割まで引き下げ、仕入れ高350億円を削減する計画
---
#### 古着の値付け
- ZOZOUSED
- 古着は商品管理情報が少なく、値付けが課題であった
- 以前はブランド・カテゴリー・コンディションなどの情報でのみ判断
- ZOZOグループ内のブックデータを活用しAIモデルを構築
- 値付けの的中率が1.5倍に
- 平均買取価格が200~300円上昇
---
### AI事例集(エンタメ・メディア)
#### 新聞記事のテキストデータ化
- 日経新聞
- 創刊(1876年)から1970年代までの約100年分の新聞記事をデジタル化
- これまではスキャンしたイメージデータだけを保管していた
- 文字の画像データとその文字をテキスト化したデータの組を5万字分作成し学習
- 読み取り精度を95%まで向上
- 古い新聞の文字の読み取りは難しいとされていた
- 人手による読み取り作業の負担を大幅に軽減
c.f.) 富士通 記事の全文要約システム
---
#### リアルタイムで価格変動するチケット
- 福岡ソフトバンクホークス
- 需要に応じて価格が変動するダイナミックプライシングを採用
- 過去の販売実績・順位・成績・試合日時・席種・売れ行きなどからAIで需要を予測
- 予測をもとにリアルタイムで価格を決定するように、AIシステムを活用
- 空席が多いときは買いやすく、人気な試合でも価格次第で購入可能に
---
#### AI合成による女性アナウンサー
- 中国国営メディア「新華社」
- AIで合成された女性アナウンサーがコメントを読み上げる
- 男性アナウンサーver.は既に存在
- 実際に存在するアナウンサーの容姿そっくりにAIで合成
- 読み上げもスムーズに可能
---
### AI事例集(運輸・物流・交通)
#### 配送伝票入力の自動化
- 従来は、繁忙期には1日に100万枚の伝票を手動で入力
- AIによる自動入力で月8400時間相当の作業を削減
- ディープラーニングによって手書き数字の認識精度を99.995%に
c.f.) UbieのAI医療問診、AI-CONの契約書レビュー・作成支援サービス、ソフトバンクの新卒採用におけるESチェック
---
#### スマート物流
- 日立製作所と三井物産
- 熟練者が1~2日かけていた配送計画作業が数分~1時間程度で可能に
- 車両ごとの配送先・配送日時の割り付け、配送ルートの策定を自動立案
- 物流センターや拠点の位置・走行ルートと時間・渋滞...などに加えて、**熟練者の経験**も分析の変数に導入
- 配送車の走行記録をGPSで取得し、配送実績の作成も自動化
- 車両やドライバーごとに配送記録を可視化
c.f.) 京東(JD.com)のスマート倉庫、NTTドコモのAIタクシー
---
#### 自動運転と高度安全運転支援
- 自動運転システムがトラブルを起こした時、ガーディアン(高度安全運転支援)に切り替え
- ガーディアンは運転の支援が主眼
- 運転操作の主体は人間
- 二重に安全を確保することが可能に
- トヨタ以外の自動運転システムを利用することが可能に
c.f.) JFEスチールの人物検知AIによる作業員の安全確保
---
### AI事例集(製造・資源・建設)
#### 家電向けAI
- LG
- 冷蔵庫内の温度や冷気の循環が不足していないかなど、家電の利用に関連した状態をAIが確認
- 誤用・故障・メンテナンスの必要や、異常を検知
- 事態が悪化する前にアプリに通知を送信
---
#### 工場での品質担保
- ブリヂストン
- 生産のボトルネックだったタイヤの成形工程を自動化
- 独自開発のAIにより精度の高いタイヤ成形
- 警告音が鳴ったときのみ人手が必要
c.f.) 大京グループのAI管理員、キユーピーの不良品特定、電通の天然マグロの品質判定
---
#### 生活習慣を覚えるスマートハウスAI
- 西松建設が自社の社宅に導入
- 音声、映像、動作、振動、温度、湿度、照度、紫外線 を測定
- 居住者が何をしようとしているのかを認識
- 居住者の操作無しで、自動で室内の家電をコントロール
- 帰宅の時間に合わせた空調の管理、カーテンの開閉、施錠などが可能
- その他の様々な学習を繰り返すことができる
---
### AI事例集(その他)
#### 屋内農場で作物の風味調整
- Plenty(米スタートアップ)
- 制御可能な30種類のパラメータを用意
- 700種類の作物について、AIが気候などの条件に基づいて最適なパラメータを調整
- 野菜や果物の風味を調整
- ある作物の収穫量の増分は過去300年の収穫量の増分に匹敵
---
#### 顔認証AI搭載のATM
- セブン銀行
- 顔認証を利用し、ATMの操作だけで口座開設が可能
- 必要情報はスマホで事前に入力
- 出力されたQRコードをATMに読み込ませ、ATMでの本人確認の後、口座開設
- カードレス入出金も検討中
---
#### 要介護度予測
- エクサウィザーズと神奈川県
- 神奈川県が所有する介護判定データ、介護給付金データを学習
- このまま状態推移すると将来の介護費用がどのように変化するか予測
- 要介護度スコアの記録によって、対策の効果があったかどうか確認できる
- 効果的な介護施策の立案に貢献
---
#### 退職予備軍の予測
- トランスコスモス
- コールセンタースタッフの退職予備軍を予測
- オペレータ属性・勤怠・パフォーマンスなどによって予測
- 予測精度95%
- 半分近いオペレータの離職を抑止することに成功
---
#### 「困っている人」の自動検知
- ALSOK
- カメラの映像から「困っている人」の動きを自動検知
- 警備員のスマホに通知を送信
- パトロール要因の見回りの補助
- エリアのセキュリティ向上
<!-- まだまだ事例は載っていたのですが、やっていることが本質的に同じものが多いです -->
---
### 話題のAIについて知る
#### 生成系AI
- テキストや音声などの入力データを基に
- 画像 (Stable Diffusion, Midjourney, DALL・E ...)
- 文章 (ChatGPT, Bing AI, Bard ...)
- 文字起こし (Whisper, otter.ai, notta.ai ...)
- を生成
- 流行りのChatGPTは文章生成系のAI
[OpenAI](https://openai.com/)
[StableDiffusion](https://stablediffusionweb.com/)
[Midjourney](https://www.midjourney.com/home/?callbackUrl=%2Fapp%2F)
[otter.ai](https://otter.ai/jp)
[notta.ai](https://www.notta.ai/)
---
#### 大規模言語モデル
- LLM(Large Language Model)
- 文章の続きを予測するように学習したモデル
[入力] 日本の首都は -> [出力] 東京
---
#### GPT
- GPTとは
- ディープラーニングによる生成系AIの一種
- OpenAIにより開発されている
- **好ましい回答**を得られるようにチューニングされている
- Supervised Fine Tuning(SFT)
- 報酬モデル(Reward Modeling)
- Proximal Policy Optimization(PPO)
- 2023年3月:GPT-3に続くGPT-4が登場
---
- 好ましい回答とは?
- 例えば、人間が質問文を入力
- 質問文が沢山並んだものを学習したAIは、別の質問文を回答
- これは好ましくない
- ほしいのは質問の答えなので、そうなるようにチューニングする
[How GPT3 Works - Visualizations and Animations](https://jalammar.github.io/how-gpt3-works-visualizations-animations/)
*[chatgpt introduction](https://hireroo.io/journal/tech/chatgpt-introduction)
---
#### GPTで可能なタスク
- 情報抽出
- 要約
- 感情分析
- エンティティ分析
- 文章理解
- キーフレーズ抽出
- インサイト抽出
- チェック
- 校正
- 添削・評価
- 文章の翻訳
- テキストの分類
- 文章生成
- 思考の壁打ち
- 問題作成
- コード作成
- 情報検索
- アイデア創出
- 記述アシスタント
---
#### 利用方法
- **OpenAIのwebサイトからChatGPTを利用**
[Introducing ChatGPT](https://openai.com/blog/chatgpt)
- **APIを叩く**
[API reference - OpenAI](https://platform.openai.com/docs/api-reference)
- **ブラウザからBing AIを利用**
- Bingでも使用しているLLMはGPT-4
- Microsoft Bing 検索, Edge
[新しいBingを体験する](https://www.microsoft.com/ja-jp/bing?form=MA13FJ)
---
#### 利用において留意すべき点
- 出力された情報の妥当性
- 学習に使われた情報は正しい?
- ChatGPTはこちらの質問を理解しているわけではない
- 機密事項の入力
- 学習に使われてしまい、漏洩する危険性
- 知財の扱い
- サービスによって利用許諾が異なる場合がある
*[ソフトウェアエンジニアじゃない方向けChatGPTの概要](https://speakerdeck.com/dahatake/chatgpt-nogai-shuo-software-engineer-ziyanaifang-xiang-ke)
---
#### GPT以外の話題になったLLM(* 関連技術)
| 名前 | 開発 |
| --- | --- |
| PaLM | Google |
| LaMDA | Google |
| Claude | Anthropic |
| * NeMo | NVIDIA |
| LLaMA | Meta |
| StableLM | Stability AI |
| Dolly 2.0 | Databrics |
| * GitHub Copilot | GitHub |
[最近話題になったLLMまとめ](https://note.com/npaka/n/n00e5c66b6c18)
[Wikipedia: LLM #List of LLM](https://en.wikipedia.org/wiki/Large_language_model#List_of_large_language_models)
[prompt engineering guide: モデル一覧](https://www.promptingguide.ai/jp/models/collection)
---
#### PaLM (Google)
- 2023/3/14にAPIが発表された
- パラメータ数は最大5400億
- GPT-3は最大1750億(GPT-4は不明)
> PaLMの能力を質疑応答、文脈内読解、文章完成、常識推論といった29の英語自然言語処理(NLP)タスクで評価したところ、28タスクでGPT-3、LaMDAといった先行LLMの性能を上回った
[Google、「PaLM」のAPIを発表](https://ascii.jp/elem/000/004/128/4128754/)
**利用方法**
- Generative AI App Builder
- 企業や研究者が独自のデータを使って
- チャットインターフェイス
- デジタルアシスタント
- を構築するためのサービス
- Vertex AI
- 機械学習モデルやAIアプリを構築・デプロイするためのAI開発プラットフォーム
- Google CloudでPaLMが利用可能
- Google Workspaceでの利用
- Gmail
- メールの下書き、返信、要約、優先順位付け
- Googleドキュメント
- ドキュメントのブレインストーミング、校正、執筆、書き直し
- スライドで自動生成された画像やオーディオ、ビデオを使用
- スプレッドシートの自動補完、数式生成、元データからの洞察や分析
- Google Meetで新しい背景の生成、会議のメモ etc...
---
#### LaMDA (Google)
- Google BardのベースとなっているLLM
- Google Bard
[try Bard by joinig waitlist](https://bard.google.com/?hl=en)
- まだ日本語は苦手らしい
- 2023/4, コーディング支援にも対応
- 2023/5, 日本語に対応
[Google Japan BLOG: AI の次の重要な一歩](https://japan.googleblog.com/2023/02/ai.html)
[LaMDA: our breakthrough conversation technology](https://blog.google/technology/ai/lamda/)
---
#### Claude (Anthropic)
- Anthropic
- 元OpenAIの社員が設立し、Googleが3億ドル投資しているAIスタートアップ
- Quora, Notion, DuckDuckGo等が導入
- Quoraの新アプリ、Poe
- Notion
- DuckAssist
[ChatGPTに対抗するAI「Claude」発表](https://ascii.jp/elem/000/004/128/4128973/)
[Introducing Claude](https://www.anthropic.com/index/introducing-claude)
- 以下のリンクからClaudeとチャットが可能
[Claude Early Access](https://www.anthropic.com/earlyaccess)
---
#### * NeMo (NVIDIA)
- オープンソースのPythonツールキット
- 会話型AiのためのNNを研究者が簡単に構成することができる
[The 7 Steps Required to Build an AI-Language Model](https://levelup.gitconnected.com/the-7-steps-required-to-build-an-ai-language-model-44bff3fc8643)
> NVIDIA NeMo is a conversational AI toolkit built for researchers working on automatic speech recognition (ASR), text-to-speech synthesis (TTS), large language models (LLMs), and natural language processing (NLP). The primary objective of NeMo is to help researchers from industry and academia to reuse prior work (code and pretrained models) and make it easier to create new conversational AI models.
[NeMo GitHub Link](https://github.com/NVIDIA/NeMo)
[NVIDIA NeMo サービス](https://www.nvidia.com/ja-jp/gpu-cloud/nemo-llm-service/)
[NVIDIA NeMo Early Access Page](https://developer.nvidia.com/nemo-llm-service-early-access)
---
#### LLaMA (Meta)
- パラメータ数70億~650億の小規模なモデル
- GPT等と違って大規模なインフラが必要なく、ローカル環境で動かせる
[LLaMA GitHub Link](https://github.com/facebookresearch/llama/tree/main)
- パラメータ数130億でも、ほとんどのベンチマークでGPT-3より性能が高い
[LLaMA: Open and Efficient Foundation Language Models](https://research.facebook.com/publications/llama-open-and-efficient-foundation-language-models/)
[Metaが手がけるパラメータ数10分の1の大規模言語モデルLLaMA](https://www.infoq.com/jp/news/2023/03/meta-ai-large-language-model/)
- LLaMAを元にファインチューニングしたモデルが多数存在する
---
**Alpaca**
- LLaMAをファインチューニング
- "text-davinci-003"による"self-instruct"で生成された命令追従型の学習データを使用
- OpenAIのtext-davinci-003に似た挙動だが、非常に小規模で再現が容易
- Alpaca?
> スタンフォード大学で、精度の良い自然言語モデルから、追加の学習データを生成することで、知識蒸留ができ、高い精度が出せたという報告から始まったもの。主にスタンフォード大学が作ったデータセットで学習したモデルなどで使用される。
> **OpenAIに競合モデルに出力を利用するなという規約がある。**
[ゼロから始めるLLM](https://note.com/sora_beta/n/n3e437930c9d5)
- つまり商用利用不可
[Alpaca GitHub Link](https://github.com/tatsu-lab/stanford_alpaca)
---
**Alpaca LoRA**
- Alpacaのデータセットを使用してLLaMAをLoRAファインチューニング
- LoRA: Low-RAnk adaptation of LLM
[arxiv](https://arxiv.org/pdf/2106.09685.pdf)
- Bingで論文にアクセスすると内容を噛み砕いて教えてくれる
[Training Your Own LoRAs](https://github.com/oobabooga/text-generation-webui/blob/main/docs/Training-LoRAs.md)
[Alpaca LoRA GitHub Link](https://github.com/tloen/alpaca-lora)
---
**Vicuna**
- Alpacaのデータセットを元に、ShareGPTなどのChatGPTのログを学習データとして追加しLLaMAをファインチューニング
- 商用利用は不可
[Vicuna GitHub Link](https://github.com/lm-sys/FastChat)
[デモ](https://chat.lmsys.org/)
---
**GPT4ALL**
- Nomic AIが開発したLLaMAベースの大規模言語モデル
- 商用利用は不可
[GPT4ALL GitHub Link](https://github.com/nomic-ai/gpt4all)
etc...
---
#### StableLM (Stability AI)
- Stable Diffusionの会社
- オープンソース
- Google Colab上で簡単に試せる
[note: Google Colab で StableLM を試す](https://note.com/npaka/n/n4d5f20ffbf36)
- Hugging Faceでも試せる
[huggingface: stableai](https://huggingface.co/stabilityai)
[Stability AIは言語モデル「StableLM Suite」の第一弾をリリース開始](https://ja.stability.ai/blog/stability-ai-launches-the-first-of-its-stablelm-suite-of-language-models)
---
#### Dolly 2.0 (Databricks)
- オープンソース
- Hugging Faceで試せる
[huggingface: databricks](https://huggingface.co/databricks)
---
#### * GitHub Copilot (Microsoft)
- GitHubが提供している
- OpenAI Codexモデルを使用
- **AIペアプログラマー**
- GitHub上のコード等から学習し、可能性の高いコードを提案
- エディタ上で動作
- JetBrains IDE, Neovim, Visual Studio, Visual Studio Codeで利用可能
[GitHub Copilot の概要](https://docs.github.com/ja/copilot/getting-started-with-github-copilot)
c.f.) [prompt engineering guide: PAL(プログラム支援言語モデル)](https://www.promptingguide.ai/jp/applications/pal)
---
### 無料で商用利用可能なオープンソースLLM一覧
- 既存のモデルを利用する場合、それが商用利用可能かどうかは注意が必要
> コード、モデル、(データセット)すべてのライセンスが[商用可]のレベルでオープンなものだけ記載
> - 多くは[Apache 2.0]ライセンス
| モデル名 | 開発 |
| -------- | -------- |
| Flan-T5 | Google |
| Flan-UL2 | Google |
| Dolly 2.0 | |
| Open Assistant | |
| StableLM | StableAI |
| OpenLLaMA ||
| MPT-7B ||
| polyglot ||
[商用利用可能なオープンソースLLM](https://scrapbox.io/work4ai/%E5%95%86%E7%94%A8%E5%88%A9%E7%94%A8%E5%8F%AF%E8%83%BD%E3%81%AA%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9LLM)
[対話AIの競争さらに激しく](https://news.mynavi.jp/article/20230420-2658594/)
---
### OSSのLLMを使ってみる
- ローカルPCにGPUが必要
- ない場合はGoogle Colabを利用する(無料)
- jupyter notebookが便利
- 今回はColabを使う
- "Explain to me the difference between cat and dog." への解答で比較
---
#### Dolly 2.0
- 実行前に、[Runtime]->[Change runtime type]からGPUを選択するとGPUが使える
- モデルが三種類あるので、比較してみたい
- [huggingface](https://huggingface.co/databricks)を参考
```python=
# !をつけるとシェルコマンドを実行可能
!pip install accelerate>=0.12.0 transformers[torch]==4.25.1
import torch
from transformers import pipeline
# 2_3b
generate_text_2_3b = pipeline(model="databricks/dolly-v2-3b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto") #5.68GB
input = "Explain to me the difference between cat and dog."
res_2_3b = generate_text_2_3b(input)
print(res_2_3b[0]["generated_text"])
```
- 出力
```
# 2_3b
Cat and dog are two different species. They both are mammals, and both have eight inches long legs, two ear flaps, and two tail-like appendages. They both need very warm habitats to survive, they both are nocturnal, and they both eat and drink from dish. However, they are very different species, because cats are social and follow rules, while dogs are more independent and do not obey the same rules.
```
- かなり嘘
- モデルの構築には時間がかかる
- 2_7bをやろうとしたらColabの無料プランのRAMを使い果たしたため、これから一番小さいモデル同士の比較をする
---
#### StableLM
- [huggingface](https://huggingface.co/stabilityai)
- チューニングされていないモデル(base)とされているモデル(tuned)についてそれぞれ3bと7bの2種類ある
- tuned_3bについて試したが、dollyよりモデルがだいぶ重い印象
- Colab の無料プランのT4ではぎりぎりRAMがたりなかった...(多分16GBが限度)
```python=
!pip install accelerate>=0.12.0 transformers[torch]==4.25.1
from transformers import AutoModelForCausalLM, AutoTokenizer, StoppingCriteria, StoppingCriteriaList
tokenizer_tuned_3b = AutoTokenizer.from_pretrained("StabilityAI/stablelm-tuned-alpha-3b")
model_tuned_3b = AutoModelForCausalLM.from_pretrained("StabilityAI/stablelm-tuned-alpha-3b") #10.2GB
model_tuned_3b.half().cuda()
class StopOnTokens(StoppingCriteria):
def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
stop_ids = [50278, 50279, 50277, 1, 0]
for stop_id in stop_ids:
if input_ids[0][-1] == stop_id:
return True
return False
system_prompt = """<|SYSTEM|># StableLM Tuned (Alpha version)
- StableLM is a helpful and harmless open-source AI language model developed by StabilityAI.
- StableLM is excited to be able to help the user, but will refuse to do anything that could be considered harmful to the user.
- StableLM is more than just an information source, StableLM is also able to write poetry, short stories, and make jokes.
- StableLM will refuse to participate in anything that could harm a human.
"""
prompt = f"{system_prompt}<|USER|>Explain to me the difference between cat and dog.<|ASSISTANT|>"
inputs = tokenizer_tuned_3b(prompt, return_tensors="pt").to("cuda")
tokens = model_tuned_3b.generate(
**inputs,
max_new_tokens=64,
temperature=0.7,
do_sample=True,
stopping_criteria=StoppingCriteriaList([StopOnTokens()])
)
print(tokenizer_tuned_3b.decode(tokens[0], skip_special_tokens=True))
```
---
#### Flan-T5
- [huggingface](https://huggingface.co/google/flan-t5-small)
- t5-smallで試してみる(308MB)
```python=
!pip install transformers
!pip install sentencepiece
!pip install accelerate
import numpy as np
import matplotlib.pyplot as plt
from transformers import T5Tokenizer, T5ForConditionalGeneration
tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-small")
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-small", device_map="auto")
def inference(input_text):
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to("cuda")
outputs = model.generate(input_ids, max_length=200, bos_token_id=0)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)
input_text = "Explain to me the difference between cat and dog."
inference(input_text)
```
- 出力
```
Cats are dogs.
```
- ぜんぜんだめ
- 結構軽そうなのでlargeで試してみた(3.13GB)
```
Cats are domesticated animals
```
- ちょっと正しいかもしれない
#### Flan-UL2
- ローカルで動かすのは諦めてhuggingface上で試す
```
dog is a mammal.
```
---
#### StableLM
- tuned 7b
```
Well, there are a few differences. They’re both mammals, for starters. In terms of physical characteristics, they also have similar body plans, with a typical big cat having four legs, while dogs have five. There are also some important differences in behavior, with cats being more independent and aloof, while dogs are often more social. So overall I would say that cats and dogs are pretty similar, but they each have important differences. Would you like me to go on?
```
- 大きいモデルはすごい
---
### プロンプトエンジニアリングとは
- AIによる思考を人間が助ける手法
- 質問の仕方により、GPTの回答の質が変わる
- 質問の情報量と質
- AI技術の急速な発展により、プロンプトエンジニアの需要が高まっている
[Prompt Engineering Guide](https://www.promptingguide.ai/jp)
[Best practices for prompt engineering with OpenAI API](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api)
---
### プロンプトエンジニアリングの技法
#### 基本的な構成
- 命令
- モデルに実行してほしい特定のタスク
- 文脈
- 外部情報や追加の文脈
- 入力データ
- 応答してほしい入力や質問
- 出力指示子
- 出力のタイプや形式
---
#### プロンプトの設計のヒント
- プロンプトの設計は、試行錯誤が必要
- 簡単なものから始める
- より良い結果を得るために要素を追加する
- 指示は明確に
- 指示はプロンプトの最初に配置
- ×「短く」 ○「2~3文で」
- 指示と文脈を分けるために### 指示 ### 等、記号を使う
- 文脈は具体的であるほどよい
- (可能なら)英語で
- 英語のデータを一番多く習得しているはず
- より正確な出力が得られるはず
---
#### [ビジネス] 新規企画を立案したい
- 入力例
```
あなたは一流のWebサービスの企画担当です。
AIを利用した新しいサービスを企画しようと考えています。
#制約条件
・ユーザーは大学生で、試験対策のニーズを捉えたい。
・ユーザーがWebサービスをリピート訪問してくれるようなアイデアが望ましいです。
#指示
・独創的で、まだ誰も思いついていないような、新しいサービスのアイデアのタイトルを5つ出してください。
No repeat, no remarks, only results, in Japanese:
```
---
- 出力例
```
ありがとうございます!「学習マッチング」は、ユーザーの学習傾向や目標、興味などをアンケート形式で収集し、AIがその情報を元に最適な勉強仲間をマッチングするサービスです。
例えば、ユーザーが英語を学びたいという目標を持っている場合、AIは英語の学習に興味があるユーザーを探し、その中でもユーザーの学習ペースや学習方法、好きな教材などが近いユーザーをマッチングします。そして、ユーザー同士でコミュニケーションを取り合い、情報交換やお互いの学習を助け合うことができます。
このように、ユーザー同士が学び合うことで、学習のモチベーションアップや学習成果の向上が期待できます。また、AIが自動的に勉強仲間をマッチングするため、ユーザー自身が勉強仲間を探す手間や時間が省けます。
「学習マッチング」は、大学生の試験対策だけでなく、将来の就職やキャリアアップなどでも有用なサービスとなるでしょう。
```
---
{"metaMigratedAt":"2023-06-18T03:02:26.836Z","metaMigratedFrom":"Content","title":"JMRA seminar 2023","breaks":true,"contributors":"[{\"id\":\"34455424-b7bc-4c33-9c2a-d631356cae2f\",\"add\":28017,\"del\":5372},{\"id\":\"6323a457-1403-4b13-b339-10675850c79a\",\"add\":28,\"del\":17}]"}