$30 off During Our Annual Pro Sale. View Details »

【第二回】サイエンスフロンティア高校 サイエンスリテラシI 授業スライド

【第二回】サイエンスフロンティア高校 サイエンスリテラシI 授業スライド

More Decks by Semantic Machine Intelligence Lab., Keio Univ.

Other Decks in Technology

Transcript

  1. 慶應義塾大学 杉浦孔明研究室
    飯岡雄偉,小槻誠太郎,小松拓実,
    是方諒介,松尾榛夏,和田唯我
    サイエンスフロンティア高校
    サイエンスリテラシI

    View Slide

  2. 第3回 - Image-to-text:
    画像の説明文を生成する
    - 2 -

    View Slide

  3. 今日の目標:知る+試す
    - 3 -
    知る
    ● 自然言語処理とはどんなもの?
    試す
    ● BLIPを使ってみよう!

    View Slide

  4. 知る
    自然言語処理とはどんなもの?
    - 4 -

    View Slide

  5. 自然言語とは
    - 5 -
    自然言語
    ● 人間が普段使う日本語や英語のような言語
    例:
    ■ 『夏休みが無くなったらすごく悲しい。』
    ■ “I wanna sleep a day”.

    View Slide

  6. 自然言語とは
    - 6 -
    自然言語
    ● 人間が普段使う日本語や英語のような言語
    厄介ポイント↓
    ● 意味が文脈に依存するケースがある
    例:『あまい』
    『ドーナツがあまい。』/『彼は子供にあまい。』
    ● スラング、話し言葉など新しい言葉がどんどん出てくる
    例:wanna, doggo,
    Doggo by Imagine

    View Slide

  7. 自然言語処理とは
    - 7 -
    ⚠Warning
    ● 事前知識が必要なので一定以上の詳細には踏み込みません...
    ● お気持ちを知るつもりで…!
    📔Note
    ● 勉強したい人はとりあえず高校数学を修めて大学数学をかじりましょう
    ● ベクトル(線形代数)
    ● 確率
    ● 微積分 … etc

    View Slide

  8. 自然言語処理とは
    - 8 -
    1. 自然言語をどう扱うのか?
    2. 自然言語処理では何をしているのか?

    View Slide

  9. 1. 自然言語をどう扱うか
    - 9 -
    結論:
    文を小さい単位に分割して、その列として扱う

    View Slide

  10. 1. 自然言語をどう扱うか
    - 10 -
    結論:
    文を小さい単位に分割して、その列として扱う
    ● 文字:「おはよう」→ お / は / よ / う
    ● サブワード:部分文字列。単体で意味が取れる保証はしない。
    例:”ball” → b / all
    ● 単語:意味がとれる分割
    例:”What are you doing” → what / are / you / doing

    View Slide

  11. 1. 自然言語をどう扱うか
    - 11 -
    結論:文を小さい単位に分割して、その列として扱う
    → では分割した後は、どうする?

    View Slide

  12. 1. 自然言語をどう扱うか
    - 12 -
    結論:文を小さい単位に分割して、その列として扱う
    → では分割した後は、どうする?
    N次元のベクトルに変換して扱います

    View Slide

  13. 1. 自然言語をどう扱うか
    - 13 -
    結論:文を小さい単位に分割して、その列として扱う
    → では分割した後は、どうする?
    N次元のベクトルに変換して扱います
    (ここは頭からっぽにしていてもいいです)

    View Slide

  14. 1. 自然言語をどう扱うか
    - 14 -
    結論:文を小さい単位に分割して、その列として扱う
    → では分割した後は、どうする?
    N次元のベクトルに変換して扱います
    (ここは頭からっぽにしていてもいいです)
    z
    x y
    N=3の例
    3次元空間上の点を
    原点からの各座標方向の変位で示す
    (1, 7, 4)T

    View Slide

  15. 1. 自然言語をどう扱うか
    - 15 -
    結論:文を小さい単位に分割して、その列として扱う
    → では分割した後は、どうする?
    N次元のベクトルに変換して扱います
    (ここは頭からっぽにしていてもいいです)
    z
    x y
    N=3の例
    この空間の上に分割した
    単語/サブワードをマッピング
    king
    woman

    View Slide

  16. 1. 自然言語をどう扱うか
    - 16 -
    結論:文を小さい単位に分割して、その列として扱う
    → では分割した後は、どうする?
    N次元のベクトルに変換して扱います
    (ここは頭からっぽにしていてもいいです)
    z
    x y
    N=3の例
    このベクトルの足し算で意味の足し算が
    出来るようにマッピングされる
    king
    woman
    queen

    View Slide

  17. 1. 自然言語をどう扱うか
    - 17 -
    結論:文を小さい単位に分割して、その列として扱う
    → では分割した後は、どうする?
    N次元のベクトルに変換して扱います
    (ここは頭からっぽにしていてもいいです)
    z
    x y
    N=3の例
    このベクトルの足し算で意味の足し算が
    出来るようにマッピングされる
    king
    woman
    queen
    N次元のベクトルに変換
    N は768や1024くらいの大きさ
    (自然言語が内包する語彙数よりは
    かなり小さい)
    自然言語処理モデルは
    こうしたベクトルの列を扱います

    View Slide

  18. CLIP[Radford+, ICML21]
    • 画像もベクトルに変換することができる
    • CLIP[Radford+, ICML21]
    • 自然言語と画像のベクトルを近づける
    → 自然言語と画像を対応付けることができる
    2. 自然言語と画像を対応付ける
    - 18 -
    z
    x y
    king
    woman
    近づける
    近づける

    View Slide

  19. CLIP[Radford+, ICML21]
    • 画像もベクトルに変換することができる
    • CLIP[Radford+, ICML21]
    • 自然言語と画像のベクトルを近づける
    → 自然言語と画像を対応付けることができる
    2. 自然言語と画像を対応付ける
    - 19 -
    z
    x y
    king
    woman
    近づける
    近づける
    はい、
    頭からっぽでも
    良いよゾーンは終わりです!
    深呼吸して次に進みましょう

    View Slide

  20. Image-to-text:
    画像の説明文を生成する
    BLIPを使ってみよう!
    - 20 -

    View Slide

  21. 画像キャプション生成(Image Captioning)
    - 21 -
    ■ 画像の内容を説明する文章を生成する技術
    ■ 使われている場面
    ■ 視覚障害者の補助
    ■ 未来に起こりそうな出来事を説明
    ■ =Future Captioning
    前の車が車線変更
    しそうです。
    [Mori+ IV21]
    着物を羽織った女性が
    竹をくわえていますね。

    View Slide

  22. ビジュアル質問応答(Visual Question Answering / VQA)
    - 22 -
    ■ 画像中の物体に関する質問に答える技術
    ■ 使われている場面
    ■ 医療画像をもとにした診察
    ■ 対話を通した子供の学習補助
    [問題] 男性は何の動物の被り物をしている?
    おそらく猪かと。
    [Umada+ DEIM20]
    何か異常は見られますか?
    若年性皮膚筋炎です。
    Q.
    A.

    View Slide

  23. Image Captioning / VQA 手法:BLIPを使ってみよう
    ■ BLIP
    ■ 2022年にSalesforceが発表したモデル
    ■ 様々なVision and Languageタスクを実行可能
    ■ 今回は、”Image Captioning” と “VQA” を実際にBLIPに実行させます
    “A man swinging a tennis racket at a tennis ball”
    [Image Captioning]
    [VQA]
    Q. “What sport does he play?” A. “Tennis”
    https://mainichi.jp/articles/20220114/k00/00m/050/207000
    c

    View Slide

  24. BLIPで Image Captioning / VQA
    ■ 使いたい写真をパソコンに送信
    ■ スマホからGoogle ドライブへアップロード
    ■ ブラウザで検索して画像を保存
    ■ 以下のリンクにアクセス
    ■ https://example.com

    View Slide

  25. ライブラリのインストール
    ■ ”ライブラリのインストール”のプログラムを実行
    ■ カーソルを近づけると実行ボタン が表示されるのでクリック

    View Slide

  26. 画像をアップロード
    ■ “テスト画像のロード”のプログラムを実行
    ■ 「Choose Files」or「ファイルを選択」が出てくるのでクリック
    ■ 好きな画像を選択

    View Slide

  27. Image Captioningを実行
    ■ “画像キャプション生成モデルのロード” を実行
    ■ “画像キャプション生成” を実行
    ■ 先ほどアップロードした画像に、AIがキャプションを生成!
    ■ ※違う画像でキャプション生成するとき
    ■ “テスト画像のロード” 〜 ”画像キャプション生成” を順番に実行

    View Slide

  28. Image Captioningの実行例
    ■ 正確に画像の説明文を生成可能
    ■ セパタクローはバレーボールと説明
    “an orange cat riding a red
    bicycle on a sidewalk”
    https://www.pinterest.jp/pin/cat-on-a-bike--
    356558495482515964/
    “a group of men playing
    a game of volleyball”
    https://helloworld.international/events_/free-event-sepak-takraw/

    View Slide

  29. Visual Question Answering (VQA) を実行
    ■ “Visual Question Answeringモデルのロード” を実行
    ■ “VQAの実行”の右側にある”Question設定”を編集
    ■ 先ほどアップロードした画像に関する質問文を英語で記述
    ■ “VQAの実行”のプログラムを実行 → AIが質問に対する答えを生成!
    ■ ※違う画像について質問するとき
    ■ “テスト画像のロード” と上記 を順番に実行

    View Slide

  30. Visual Question Answering (VQA) の実行例
    ■ 正確に質問の答えを生成
    ■ イラストについても正しく回答
    Q. what is the mood of the children?
    A. happy
    Q. how many children in the picture?
    A. 3
    [2] Wang, Peng, et al. "Unifying architectures, tasks, and modalities through a simple
    sequence-to-sequence learning framework." arXiv preprint arXiv:2202.03052 (2022).
    [2]
    Q. what is the woman doing?
    A. snowboarding
    Q. what is the season in the picture?
    [1] https://livejapan.com/ja/article-
    a0000435/
    A. winter
    [1]

    View Slide

  31. 31
    Appendix : モデル図
    ▷ 入力画像・入力テキストから特徴量を抽出
    ○ 画像エンコーダ :Vision Transformer
    ○ テキストエンコーダ:BERT

    View Slide

  32. 32
    Appendix: Captioning and Filtering (CapFilt)
    ▷ Filter
    ○ 一度事前学習済みのImage-grounded Text Encoderを利用
    ○ ITM headがFalseであればデータセットから排除
    Li, J., Li, D., Xiong, C., & Hoi, S. (2022). Blip: Bootstrapping language-image pre-training for unified vision-language understanding and generation. arXiv preprint arXiv:2201.12086.

    View Slide

  33. 第4回 - 自然言語生成:
    文の続きを生成する
    - 33 -

    View Slide

  34. 知る
    自然言語生成技術はどんなもの?
    - 34 -

    View Slide

  35. 自然言語生成
    - 35 -
    ■ 自然言語の文などの入力から自然言語の文を生成する技術
    ■ 使われている場面
    ■ キーボードで次の単語を予測
    ■ AIエージェントによる会話
    ■ Siri, Alexa, …
    ■ Pepper
    https://www.softbankrobotics.com/jp/product/biz3/

    View Slide

  36. 1. 自然言語をどう扱うか (復習)
    - 36 -
    前提:文を小さい単位に分割して、その列として扱う
    → では分割した後は、どうする?
    N次元のベクトルに変換して扱います

    View Slide

  37. 1. 自然言語をどう扱うか(復習)
    - 37 -
    前提:文を小さい単位に分割して、その列として扱う
    → では分割した後は、どうする?
    N次元のベクトルに変換して扱います
    (ここは頭からっぽにしていてもいいです)
    z
    x y
    N=3の例
    このベクトルの足し算で意味の足し算が
    出来るようにマッピングされる
    king
    woman
    queen
    N次元のベクトルに変換
    N は768や1024くらいの大きさ
    (自然言語が内包する語彙数よりは
    かなり小さい)
    自然言語処理モデルは
    こうしたベクトルの列を扱います

    View Slide

  38. 2. 自然言語生成では何をしているのか
    - 38 -
    結論:
    トークンの列を与えた時に次に続くトークンを予測する
    例1/2:
    f が、
    「トークンの列を入力すると、
    それに続くトークンを予測して返す」関数
    だとする
    この f は自然言語を処理する深層学習モデル
    例:GPT-3

    View Slide

  39. 2. 自然言語生成では何をしているのか
    - 39 -
    結論:
    トークンの列を与えた時に次に続くトークンを予測する
    例1/2:
    f (“自分は東北の田舎に生”) = “れ”

    View Slide

  40. 2. 自然言語生成では何をしているのか
    - 40 -
    結論:
    トークンの列を与えた時に次に続くトークンを予測する
    例1/2:
    f (“自分は東北の田舎に生”) = “れ”
    f (“自分は東北の田舎に生れ”) = “ました”

    View Slide

  41. 2. 自然言語生成では何をしているのか
    - 41 -
    結論:
    トークンの列を与えた時に次に続くトークンを予測する
    例1/2:
    f (“自分は東北の田舎に生”) = “れ”
    f (“自分は東北の田舎に生れ”) = “ました”
    f (“自分は東北の田舎に生れました”) = “の”

    View Slide

  42. 2. 自然言語生成では何をしているのか
    - 42 -
    結論:
    トークンの列を与えた時に次に続くトークンを予測する
    例1/2:
    f (“自分は東北の田舎に生”) = “れ”
    f (“自分は東北の田舎に生れ”) = “ました”
    f (“自分は東北の田舎に生れました”) = “の”

    f (“自分は東北の田舎に生れましたので、
    汽車をはじめて見たのは、よほど大きくなってからでした”)=“。”
    『人間失格』参考 (https://www.aozora.gr.jp/cards/000035/files/301_14912.html)

    View Slide

  43. 2. 自然言語生成では何をしているのか
    - 43 -
    例2/2:GPT-2の動作例 (次の単語の予測を繰り返す!)
    https://jalammar.github.io/illustrated-gpt2/

    View Slide

  44. 2. 自然言語生成では何をしているのか
    - 44 -
    例2/2:GPT-2の動作例 (次の単語の予測を繰り返す!)
    https://demo.allennlp.org/next-token-lm

    リンク先はAllen Institute for AIが提供する簡単なデモ
    文章の続きを「予測」するイメージが掴みやすい
    (余裕がある人は触ってみても良いです)
    (次のスライドに例を載せてます)

    View Slide

  45. 2. 自然言語生成では何をしているのか
    - 45 -
    例2/2:GPT-2の動作例 (次の単語の予測を繰り返す!)
    https://demo.allennlp.org/next-token-lm

    View Slide

  46. 試す
    GPT-2を使ってみよう!
    - 46 -

    View Slide

  47. 文書生成手法:GPT-2を使ってみよう
    - 47 -
    ■ GPT-2
    ■ 2019年2月にOpenAIが発表した文生成モデル
    ■ 「元女子高生AIりんな」で有名なrinna社が日本語GPT-2を公開
    ■ ある文章を与えると、続きになる文を生成
    確実に目的意識を持って、やることを掴
    むということです。何事も、最初の動機
    が明確なほど、充実した時間を過ごせる
    はずです。例えば…
    “高校生活で大事なことは”
    Radford, Alec, et al. "Language models are unsupervised multitask learners." OpenAI blog 1.8 (2019): 9.

    View Slide

  48. GPT-2で文書生成 (1/2)
    - 48 -
    ■ 以下のリンクにアクセス
    ■ https://example.com
    ■ プログラムを上から順番に実行
    ■ カーソルを近づけると実行ボタン が表示されるのでクリック

    View Slide

  49. GPT-2で文書生成 (2/2)
    - 49 -
    ■ 冒頭の文章を好きな文に変更可能
    ■ ダブルクォーテーション「”」で囲むこと
    ■ 例
    ■ 文章を変更後は、「冒頭の文章を指定」と「続きの文章を生成」
    をそれぞれ実行

    View Slide

  50. 実行例 (1/2)
    - 50 -
    なんか暇だとさ、暇な時間がもったいない
    んだよね。でもね、俺にとってその時間を
    埋めることが出来るのはポケモンゲームぐ
    らいしかないのよね。…
    山間部の給水停止や水質汚濁などの問題も
    あげられます。日本は森林を多く含んでい
    るため、水不足の心配は少ないのですが…
    “なんかいいことないかなぁ〜、
    最近暇なんだよね〜。”
    ■ 非常に高いクオリティの文書を生成
    ■ 口調もしっかり合わせてくれる
    “近年問題となっている
    こととして、”

    View Slide

  51. 実行例 (2/2)
    - 51 -
    なんか暇だとさ、暇な時間がもったいない
    んだよね。でもね、俺にとってその時間を
    埋めることが出来るのはポケモンゲームぐ
    らいしかないのよね。…
    山間部の給水停止や水質汚濁などの問題も
    あげられます。日本は森林を多く含んでい
    るため、水不足の心配は少ないのですが…
    “なんかいいことないかなぁ〜、
    最近暇なんだよね〜。”
    ■ 非常に高いクオリティの文書を生成
    ■ 口調もしっかり合わせてくれる
    “近年問題となっている
    こととして、”

    View Slide

  52. GPT-2で色々試してみよう
    - 52 -
    ■ 同じ入力を与えても実行するたびに結果が変わる
    ■ 何回か実行してみよう
    ■ 周りの人と出力結果を比べてみよう
    ■ “ ”の中を変えてみよう
    ■ 口調も変えてみよう
    ■ 面白い例を探してみよう
    ★ 面白い例を見つけたら私たちにも教えてください!!
    ★ 使い方で分からないことが合ったら気軽に声をかけてください

    View Slide