<<
2305.11000v2.pdf
---
## Page 1
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p001.png)
### 和訳
# SpeechGPT:大規模言語モデルに生まれつきのマルチモーダル会話能力を持たせるで!
Dong Zhang, Shimin Li, Xin Zhang, Jun Zhan, Pengyu Wang,
Yaqian Zhou∗, Xipeng Qiu∗
復旦大学 コンピュータサイエンス学部
復旦大学 上海知能情報処理重点研究室
https://github.com/0nutation/SpeechGPT
## 要旨(アブストラクト)
マルチモーダル大規模言語モデルっていうのは、汎用人工知能(AGI)に向けためっちゃ大事なステップやと言われてて、ChatGPTが出てきてからほんまにすごい注目を集めてんねん。せやけどな、今ある音声+言語のモデルって、だいたい「カスケード方式」っていうやり方を使ってて、モーダル間で知識のやり取りができへんのよ。なんでかっていうと、別々のモデルを繋げてるだけやからや。
この論文ではな、**SpeechGPT**っていう、生まれつきマルチモーダルで会話できる大規模言語モデルを提案してんねん。こいつはマルチモーダルなコンテンツを「聞いて理解する」のも「自分で生成する」のもできるんやで。まず音声を離散的な表現(デジタルなトークンみたいなもん)に変換して、そこから**SpeechInstruct**っていう大規模なマルチモーダル音声指示データセットを作ったんや。さらに、3段階のトレーニング戦略を使ってて、(1) モダリティ適応の事前学習、(2) マルチモーダル指示ファインチューニング、(3) モダリティ連鎖型の指示ファインチューニング、っていう流れやねん。実験結果を見たらな、SpeechGPTはマルチモーダルな人間の指示にめっちゃうまく従えることがわかったし、1つのモデルで複数のモダリティを扱えるっていう可能性をバッチリ示してんねん。デモは https://0nutation.github.io/SpeechGPT.github.io/ で見れるで。
## 1 はじめに
大規模言語モデル(OpenAI, 2023; Touvron et al., 2023)は、いろんな自然言語処理タスクでびっくりするくらいすごい性能を出してきてんねん。それと同時に、GPT-4とかPALM-E(Driess et al., 2023)、LLaVA(Liu et al., 2023)みたいなマルチモーダル大規模言語モデルが、LLMでマルチモーダルな情報を理解する力を探求してきたわけや。せやけどな、今のLLMと汎用人工知能(AGI)の間にはまだでっかいギャップがあんねん。まず第一に、今のLLMのほとんどは、マルチモーダルなコンテンツを「見て理解する」ことはできても、「自分から生み出す」ことはできへんのや。第二に、画像とか音声みたいな連続信号は、離散トークンを受け取るLLMにそのまま突っ込むわけにはいかへんのよ。
今の音声+言語モデルは、主にカスケード方式(Huang et al., 2023a)を採用してて、つまりLLMに自動音声認識(ASR)モデルとかテキスト音声変換(TTS)モデルを直列に繋げるか、LLMをコントロールハブ(司令塔みたいなもんやな)として使って、いくつもの音声処理モデルを統合して色んな音声タスクをカバーするっていうやり方やねん(Huang et al., 2023a; Shen et al., 2023)。それとは別に、生成型音声言語モデルに関する先行研究では、音声信号を離散表現にエンコードして(Baevski et al., 2020; Hsu et al., 2021)、それを言語モデルでモデリングするっていうアプローチもあんねん(Lakhotia et al., 2021; Borsos et al., 2022; Zhang et al., 2023b; Wang et al., 2023)。
∗責任著者
---
## Page 2
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p002.png)
### 和訳
図1:SpeechGPTがいろんなクロスモーダル(音声とテキストをまたぐ)タスクをこなせるっていう図やで。
音声を聞き取ったり喋ったりできる技術は前からあるんやけど、今までのやり方——つまりモデルを数珠つなぎにする方法とか、音声言語モデルとか——にはまだまだ問題があんねん。まず一つ目、数珠つなぎ方式やと、大規模言語モデル(LLM)は「テキストの中身を作るだけ」の役割になってまうねん。音声とテキストの表現がバラバラやから、LLMが持ってるめっちゃ豊富な知識を音声側に活かせへんのよ。二つ目、この数珠つなぎ方式(Shenら, 2023; Huangら, 2023a)やと、感情とかイントネーションみたいな「言葉の意味以外の情報」が途中で抜け落ちてまうねん。三つ目、今ある音声言語モデル(Wangら, 2023; Zhangら, 2023b)は音声を作ることはできるけど、音声の意味を理解するのは苦手やねん。せやから、ほんまの意味での「聞いて理解して喋る」っていうクロスモーダルな知覚と生成ができてへんわけよ。
この論文では、**SpeechGPT**っていう大規模言語モデルを提案してんねん。こいつは生まれつきクロスモーダルな会話能力を持ってて、いろんな種類のコンテンツを理解したり生成したりできるスグレモノやねん。何やってるかっていうと、自己教師あり学習で訓練された音声モデルを使って音声を離散化(バラバラのトークンに変換)して、音声とテキストのモダリティ(情報の形式)を統一してんねん。ほんで、その離散的な音声トークンをLLMの語彙にガッと追加することで、モデル自体に音声を聞き取ったり喋ったりする力を組み込んでるわけや。
モデルにマルチモーダル(複数の情報形式をまたぐ)な指示をこなす力をつけるために、**SpeechInstruct**っていう、音声とテキストのクロスモーダル指示追従データセットを世界で初めて作ったで。具体的にはな、音声を離散ユニットに変換して(Hsuら, 2021)、既存の音声認識(ASR)データセットを使ってクロスモーダルなユニット-テキストのペアを作ってん。さらに、GPT-4を使って色んなタスク用の指示を何百個も作って、実際のユーザーが出しそうな指示をシミュレーションしてんねん(付録Bに例があるで)。ほんでさらに、モデルのクロスモーダル能力をもっと上げるために、**Chain-of-Modality(モダリティの連鎖)**っていう指示データも設計してん。これは何かっていうと、モデルが音声で命令を受け取って、テキストで考えて、ほんで音声で答えを返すっていう流れやねん。めっちゃ賢いやろ?
クロスモーダルな知識の移行をうまくやって、しかも効率よく学習するために、SpeechGPTは3段階のトレーニングを踏むねん。①**モダリティ適応の事前学習**、②**クロスモーダル指示のファインチューニング**、③**Chain-of-Modality指示のファインチューニング**や。第1段階では、離散音声ユニットの続きを予測するタスクでSpeechGPTに音声理解力をつけるねん。第2段階では、さっき作ったSpeechInstructを使ってクロスモーダルな能力を鍛えるねん。第3段階では、パラメータ効率のええLoRA(Huら, 2021)っていうファインチューニング手法を使って、モダリティ間の整合性をさらにビシッと合わせるんや。
SpeechGPTの実力を確かめるために、めっちゃ幅広い人間による評価とケース分析をやったで。テキストだけのタスク、音声-テキストのクロスモーダルタスク、音声対話タスクの3つでパフォーマンスを調べてん。結果はっていうと、SpeechGPTは単一モダリティの指示追従もクロスモーダルの指示追従も、ほんで音声対話タスクもめっちゃ強い能力を発揮したで!
ワイらの貢献をまとめるとこんな感じや:
- マルチモーダルなコンテンツを理解して生成できる、**世界初のマルチモーダル大規模言語モデル**を作ったで。
- **SpeechInstruct**っていう、音声-テキストのクロスモーダル指示追従データセットを世界で初めて大規模に構築して公開したで。
---
## Page 3
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p003.png)
### 和訳
図2:左側:SpeechInstructの作り方の全体像やねん。SpeechInstructデータセットは2つのパーツでできとって、「クロスモーダル指示データ」と「チェーン・オブ・モダリティ指示データ」の2種類あんねん。テンプレート1は3.1節に載ってて、テンプレート2は付録Cに載ってるで。右側:SpeechGPTモデルの構造を図で見せとるで。
- ワイらは、人間の指示にちゃんと従える能力と、音声で会話できる能力を兼ね備えた、世界初の音声対話型の大規模言語モデル(LLM)を作ったんや。
- ほんで、離散的な表現(データをパラパラの記号みたいに変換したやつ)を使うことで、他のモダリティ(音声とか画像とか、テキスト以外の情報の種類のことやな)をLLMに組み込めるめっちゃでかい可能性を示したんやで。
## 2 関連研究
**マルチモーダル大規模言語モデル** 今のマルチモーダルLLMって、だいたい画像系ばっかりに注目しとんねん。やり方としては、事前学習済みの画像エンコーダ(画像を数値に変換するやつ)から得た連続的な表現をLLMにぶち込んで、画像とテキストのデータで全パラメータまたは一部パラメータだけ効率よく学習させるっていう流れや(OpenAI, 2023; Huang et al., 2023b; Zhang et al., 2023a)。Palm-E(Driess et al., 2023)は5400億パラメータのPaLM(Chowdhery et al., 2022)と220億パラメータのVision Transformer(Dosovitskiy, 2021)をガッチャンコして、史上最大の画像言語モデルを作ったんや。LLaVA(Liu et al., 2023)は事前学習済みのCLIP(Radford et al., 2021)っていう画像エンコーダとLLaMA(Touvron et al., 2023)を組み合わせて、GPT-4に手伝ってもらって作った画像指示データで指示チューニングしとるんや。X-LLM(Chen et al., 2023)は、いろんなモダリティの情報をX2Lインターフェースっていう仕組みで表現に変換して、大規模言語モデルの入力にしてるんやで。せやけどな、こういう構造やと、LLMはマルチモーダルの入力は処理できるけど、マルチモーダルの出力は生成でけへんねん。ワイらのアプローチはそこが違うんや。音声を中心にしたマルチモーダルLLMの開発に力入れて、マルチモーダルの入力も出力も両方いけるようにしたんやで。
**生成型音声言語モデル** 離散的な自己教師あり表現(ラベルなしのデータから勝手に学ぶやつ)をベースにした音声の生成言語モデリングは、でっかい音声データセットでの学習でめっちゃ進歩しとるんや(Nguyen et al., 2022)。AudioLM(Borsos et al., 2022)は、オーディオコーデック(音声を圧縮する符号のことやな)と意味コードを合わせて音声をモデル化する方法を提案して、テキストなしで音声を合成できるようにしたんや。VALL-E(Wang et al., 2023)はオーディオコーデックの上に生成型音声言語モデルを構築して、テキスト音声変換(TTS)を条件付き生成タスクとして扱ってるんやで。せやけど、こういうモデルって特定のタスク専用に設計されとって、LLMの恩恵を受けられてへんかったんや。SpeechGPTはLLMを土台にして構築されとって、LLMの知識を音声モダリティに転移させることで、タスクの汎化能力と人間の指示に従う能力をより高いレベルで実現しとんねん。
**音声対応LLMインタラクション** ChatGPTが登場してからというもの、専門的な音声モデルとLLMをくっつけて、LLMと直接音声でやりとりできるようにしようっていう研究がいくつか出てきたんや。HuggingGPT(Shen et al., 2023)は、人間の指示をLLMがタスクに分解して、Huggingfaceにあるモデルを呼び出して特定のタスクを実行できるようにしたんやで。自動音声認識(ASR、つまり音声をテキストに変換するやつ)やテキスト音声変換モデルも含んどるで。AudioGPT(Huang et al., 2023a)は、いろんなオーディオの基盤モデルを使って複雑な音声情報を処理して、入出力のインターフェース(ASRとTTS)でLLMと音声会話をつなげとるんや。せやけどな、こういうモデルって構造がめっちゃ複雑になるし、大量のリソースが必要やし、しかもエラーがどんどん蓄積していく問題が避けられへんねん。なんでかっていうと、ASRで音声をテキストに変換するときにちょっとミスって、そのミスったテキストをLLMが処理して、さらにTTSで音声に戻すときにまたミスって…っていう感じで、エラーが雪だるま式に増えていくんや。ワイらのアプローチは、ASRやTTSシステムに頼らずにLLMと音声でやりとりできるようにしとるから、こういう欠点をうまく回避できとんねんで。
3
離散音声ユニット抽出器 <99><5><69><597>……<31> ユニットボコーダ <43><2><64><33>……<534> [Human]: [SpeechGPT]: メタプロンプト 指示 クロスモーダル指示データ 指示チューニング テキストデータセット Speech2Unit Text2Unit 音声データセット チェーン・オブ・モダリティ指示データ SpeechInstruct チェーン・オブ・モダリティ指示 クロスモーダル指示 [Human]: この音声をテキストに書き起こしてな。これが入力や:{音声ユニットU} <eoh>。[SpeechGPT]: {書き起こしT} <eos>。[Human]: これが音声の指示やで:{音声}。ステップバイステップでやってくれてええで。指示を書き起こして、テキストの回答を作って、その回答を音声で話してな。<eoh>。[SpeechGPT]: [tq]{テキストI}; [ta]{テキストR}; [ua]{音声R} <eoa>。テンプレート1 テンプレート2 書き起こし:おはよう、お名前は? 書き起こし:こんにちは、私の名前は〇〇です。はじめまして!
---
## Page 4
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p004.png)
### 和訳
3 SpeechInstructの作り方
世の中に出回ってる音声データってまだまだ限られてるし、音声とテキストを組み合わせたタスクのバリエーションもぜんぜん足りてへんねん。せやから、ワイらはSpeechInstructっていう、音声とテキストをまたいだ指示に従うためのデータセットを自分らで作ったんよ。このデータセットは2つのパートに分かれてて、1つ目が「クロスモーダル指示」、2つ目が「モダリティ連鎖指示」って呼んでるやつやねん。SpeechInstructをどうやって作ったかは図2に載せてるで。
3.1 クロスモーダル指示
**データ集め** クロスモーダル指示を作るために、でっかい英語の音声認識データセットをいくつか集めてきたんよ。Gigaspeech(Chenら、2021)、Common Voice(Ardilaら、2020)、LibriSpeech(Panayotovら、2015)とかやな。ほんで、mHuBERT²っていう音声トークナイザーを使って、音声データを離散的なユニット(要するに音声をバラバラの記号みたいなもんに変換するやつ)にして、隣り合うフレームで同じユニットが続いてるところは重複を省いて圧縮したんよ。最終的に、900万個のユニットとテキストのペアデータが手に入ったわけや。
**タスク説明文の生成** 音声とテキストのペアデータに合う、音声認識(ASR)と音声合成(TTS)のタスク説明文を作ったんよ。Self-Instructっていう方法(Wangら、2022)とは違って、ワイらはゼロショット、つまり事前に例を見せへんやり方で説明文を生成してん。具体的には、付録Aに載せてるプロンプトをそのままOpenAIのGPT-4にぶち込んで、タスクの説明文を作らせたんよ。この方法で各タスクごとに100個の指示文ができて、いくつかの例は付録Bで見れるで。
**指示のフォーマット整理** 離散ユニット列Uとそれに対応する文字起こしTがあるとして、確率pに基づいてそれを音声認識タスクに使うか音声合成タスクに使うかを決めるねん。ほんで、対応するタスク説明文の中からランダムに1つ説明文Dを選んでくる。そうすると、タスク説明・離散ユニット列・文字起こしの3つ組(D, U, T)ができるやろ?これをテンプレートに当てはめて指示文にするんよ:[Human]:{D}. This is input: {U}<eoh>.[SpeechGPT]: {T}<eos>. って感じやな。マルチターン、つまり何回もやり取りする対話にも対応できるように、組み立てた指示文を複数つなげて会話形式にしてるんやけど、モデルの最大入力長は守るようにしてるで。
3.2 モダリティ連鎖指示
**音声指示の生成** 音声で入力して音声で出力するっていう指示データがほんまに足りてへんかってん。せやから、テキストをユニットに変換するジェネレーター(text-to-unitジェネレーター)を学習させて、テキストの指示データを音声の指示データに変換することにしたんよ。具体的には、このジェネレーターはTransformerのエンコーダー・デコーダー構造を使ってて、クロスモーダル指示のところで作ったLibriSpeechのユニットとテキストのペアで学習させてん。ほんで、moss-002-sft-dataデータセット³から、応答の長さが35単語以下のサンプルを37,969個選んできて、その指示文と応答文の両方をtext-to-unitジェネレーターで音声ユニット列に変換したんよ。結果として、音声指示・テキスト指示・テキスト応答・音声応答の4つ組が37,969個できたわけや。これを(SpeechI, TextI, TextR, SpeechR)って表してるで。
**指示のフォーマット整理** この4つ組を使って、思考の連鎖(chain-of-thought)スタイルの指示を4つの入出力パターンで作れるようになったんよ。つまり、音声指示→音声応答、音声指示→テキスト応答、テキスト指示→音声応答、テキスト指示→テキスト応答の4パターンやな。それぞれのテンプレートは付録Cに載せてるで。
4 SpeechGPT
4.1 モデルの構造
いろんなモダリティ(音声とかテキストとか)に対応できるように、統一的なフレームワークを設計したんよ。図2に示してる通り、ワイらのモデルは主に3つのパーツでできてるねん:離散ユニット抽出器、大規模言語モデル、ユニットボコーダーの3つや。この構造のおかげで、LLM(大規模言語モデル)がいろんなモダリティの入力を理解して、いろんなモダリティの出力を生成できるようになってるんよ。めっちゃ便利やろ?
**離散ユニット抽出器** 離散ユニット抽出器は、HuBERT(Hidden-unit BERT)モデル(Hsuら、2021)を使って、連続的な音声信号を離散ユニットの列に変換するもんやねん。要するに、なめらかな音声の波をポツポツとした記号の並びに変えるってことや。
---
## Page 5
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p005.png)
### 和訳
HuBERTってのは自己教師あり学習のモデルでな、何やるかっていうと、音声の一部をマスクして隠して、そこにどんなラベルが入るか予測して学習するねん。そのラベルは、モデルの中間表現にk-meansクラスタリングっていうグループ分けの手法をかけて作るんや。構造としては、1次元の畳み込み層とTransformerエンコーダを組み合わせて音声を連続的な中間表現に変換して、さらにk-meansモデルでその表現をクラスタの番号の並びに変換するねん。ほんでな、隣り合う同じ番号は取り除いて、最終的に離散ユニットの系列 U = (u1, u2, . . . , uT) になるわけや。各 ui は 0 から K−1 のどれかの値で、K はクラスタの総数やで。
**大規模言語モデル** ウチらはMeta AIのLLaMA(Touvronら、2023)を大規模言語モデルとして使ってんねん。LLaMAは埋め込み層と、複数のTransformerブロックと、LMヘッド層で構成されてるんや。パラメータの総数は70億から650億まであるで。めっちゃ膨大な1兆トークンの学習データで鍛えられてて、1750億パラメータのGPT-3と比べても、いろんな自然言語処理のベンチマークで負けてないぐらいの性能出してるねん。
**ユニットボコーダ** Polyakら(2021)の単一話者ユニットボコーダには限界があるから、ウチらは複数話者対応のユニットHiFi-GANを学習させて、離散表現から音声信号をデコード(復元)してんねん。HiFi-GANのアーキテクチャは生成器Gと複数の識別器Dで構成されてるんや。生成器はルックアップテーブル(LUT)っていう参照表を使って離散表現を埋め込みベクトルに変換して、その埋め込み系列を転置畳み込みとダイレーション層付き残差ブロックで構成されたブロックの連続でアップサンプリング(解像度を上げる)するねん。話者の埋め込みは、アップサンプリング後の各フレームに結合されるで。識別器にはマルチピリオド識別器(MPD)とマルチスケール識別器(MSD)があって、Polyakら(2021)と同じ構造を使ってるんや。
**4.2 学習**
音声の離散表現をLLMに組み込むために、まず語彙と対応する埋め込み行列を拡張するねん。学習プロセスは3段階に分けてるで。第1段階はペアになってない音声データでのモダリティ適応事前学習、第2段階はクロスモーダル指示ファインチューニング、第3段階はチェイン・オブ・モダリティ指示ファインチューニングや。
**語彙の拡張** もともとのLLMの語彙を V として、そのサイズを |V| とするやん。音声の離散表現をLLMに統合するために、ユニットトークンの追加セット V′ を用意するねん。サイズは |V′| = K や。拡張後の語彙 V′′ は、元の語彙 V と新しい語彙 V′ の和集合になるで:
V′′ = V ∪ V′ (1)
元の単語埋め込み行列を E ∈ R^{|V|×d} とするんやけど、d は埋め込みの次元数な。拡張語彙に対応するために、ランダムに初期化した新しい埋め込み行列 E′ ∈ R^{|V′′|×d} を作るねん。元の単語埋め込みは、E の値を E′ の最初の |V| 行にコピーすることで保持するんや:
E′[0 : |V|, :] = E (2)
最後に、元の語彙と埋め込み行列を新しい語彙 V′′ と埋め込み行列 E′ に置き換えるで。
**第1段階:モダリティ適応事前学習** LLMに離散ユニットのモダリティを扱えるようにするために、ラベルなし音声コーパスを使って次トークン予測タスクでLLMを学習するねん。これはLLMのテキスト事前学習の目的関数と同じ考え方やで。ラベルなし音声コーパス C が音声 U1, U2, . . . , Um で構成されてて、LLMを L1 とすると、負の対数尤度損失はこう書けるんや:
L(L|C) = − Σ_{j=1}^{m} Σ_{i=1}^{n_j} log P(u_{i,j} | u_{<i,j}; L) (3)
ここで m はデータセット C 内の音声の数、n_j は音声 U_j 内の離散ユニットトークンの数、u_{i,j} は j 番目の音声の i 番目のユニットトークンを表してるで。
**第2段階:クロスモーダル指示ファインチューニング** この段階では、ペアデータを使って音声とテキストのモダリティを揃えていくねん。SpeechInstructのクロスモーダル指示とmoss-002-sftデータセットを混ぜて使ってるんや。
---
## Page 6
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p006.png)
### 和訳
指示:この音声をテキストに書き起こしてくれへん?
入力:音声クリップ(書き起こし:I'm afraid there are no signs here said he.)
出力:テキスト:I'm afraid there are no signs here said he.
指示:この音声聞いて、内容を書き出してや。
入力:音声クリップ(書き起こし:Did anyone know that these proofs would be there no one saved the printer.)
出力:テキスト:Did anyone know that these proofs would be there no one saved the printer.
指示:この文章、できるだけ自然にしゃべってくれへん?
入力:テキスト:Today is a sunny day and I'm happy to be here.
出力:音声クリップ(書き起こし:Today is a sunny day and I'm happy to be here.)
指示:次の文章、早口で読んでくれへん?
入力:テキスト:I am a large language model that can listen and speak, a member of Fudan University, and glad to talk with you.
出力:音声クリップ(書き起こし:I am a large language model that can listen and speak, a member of Fudan University, and glad to talk with you.)
表1:モダリティをまたいだ指示追従の結果例
ほんで、ミックスデータセットIっていうのを作るねん。これはサンプルT1, T2, . . . , Txで構成されとって、ステージ1で手に入れたモデルLを、このIでファインチューニングするわけや。
各サンプルTjはt1, t2, . . . , tnjっていうトークンの並びでできてて、プレフィックス(前置き部分)とテキスト部分をくっつけたもんやねん。学習の目的は負の対数尤度を最小化することなんやけど、ここがポイントで、損失の計算はテキスト部分だけを対象にして、プレフィックス部分は無視するねん。数式で書くとこうなるで:
L(L|I) = −∑(j=1からx) ∑(i=pj+1からyj) log P(ti,j|t<i,j; L) (4)
ここでxはコーパスIに含まれるサンプルの数、yjはサンプルTjの全トークン数、pjはTjのプレフィックス部分のトークン数、ti,jはTjのi番目の単語を表してるねん。
**ステージ3:Chain-of-Modality(モダリティ連鎖)の指示ファインチューニング** ステージ2で手に入れたモデルに対して、パラメータ効率のええLoRA(Low-Rank Adaptation)(Hu et al., 2021)っていう手法を使ってファインチューニングするねん。なんでかっていうと、全パラメータをいじるんやのうて、アテンション機構にLoRAの重み(アダプター)をちょこっと追加して、その新しく追加した部分だけを学習するから、めっちゃ効率ええねん。SpeechInstructのChain-of-Modality Instructionデータを使って訓練するで。損失関数はステージ2と同じもん使うわ。
## 5 実験
### 5.1 実験のセットアップ
**データセット** モダリティ適応の事前学習には、LibriLight(Kahn et al., 2020)を使ったで。これは6万時間分のラベルなし英語オーディオブック音声が入ってるめっちゃデカいデータセットやねん。クロスモーダル指示ファインチューニングのステージでは、Gigaspeech(Chen et al., 2021)、Common Voice(Ardila et al., 2020)、LibriSpeech(Panayotov et al., 2015)、それとmoss-002-sft-dataデータセットを使ってるで。詳しくは3.1節に書いてあるわ。モダリティ連鎖の指示ファインチューニングのステージでは、moss-002-sft-dataデータセットを使ってて、詳細は3.2節を見てな。
**設定** バックボーンモデルにはLLaMA-13B(Touvron et al., 2023)を採用してるで。ステージ1ではA100 GPUを96台使って、バッチサイズ768で900ステップ訓練したんや。ステージ2ではA100を96台使って、バッチサイズ1536で2100ステップ。ステージ3ではA100を8台使って、バッチサイズ128で4200ステップ回してるわ。ほんまにGPUめっちゃ使ってるやろ?学習のハイパーパラメータの詳細はAppendix 3に載せてるで。デコーディングの設定としては、最大シーケンス長を2048、temperatureを0.8に設定してるねん。Top-kサンプリングはk=60、Top-pサンプリングはp=0.8で使ってるわ。
---
## Page 7
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p007.png)
### 和訳
指示:音声クリップ(文字起こし:appleの正しい英語の発音教えてくれへん?)
応答:音声クリップ(文字起こし:ええで、appleの正しい発音は「アップル」やで。)
指示:音声クリップ(文字起こし:春を褒める5行の詩書いてくれへん?)
応答:音声クリップ(文字起こし:お日さん出てきて、空は真っ青や、花は咲き乱れて鳥も歌っとる、日は長なって夜は短なって、春が来たで、めっちゃあったかくてええ感じやわ!)
指示:音声クリップ(文字起こし:彼女に怒られてんねんけど、どうしたらええ?)
応答:音声クリップ(文字起こし:彼女が怒ってるんは、まあしゃーないわな。大事なんは、なんで怒ってるんかをちゃんと理解して、問題解決しようとすることやねん。まずは彼女とちゃんと話し合って、彼女の気持ちを分かろうとするとこから始めたらええで。)
指示:音声クリップ(文字起こし:晩ごはんのアドバイスちょうだい。)
応答:音声クリップ(文字起こし:ええで、いくつか提案するわな。1. 新鮮な野菜でサラダ作るんや。2. 脂身少ないお肉を焼くねん。3. カリフラワーのキャセロールみたいな野菜メインの料理をオーブンで焼くのもええで。4. 野菜と豆のスープ作るんや。5. 新しいレシピに挑戦してみ。)
指示:音声クリップ(文字起こし:ステフィン・カリーって知ってる?)
応答:音声クリップ(文字起こし:もちろん知っとるで。ステフィン・カリーはアメリカのプロバスケットボール選手で、今はゴールデンステート・ウォリアーズでプレーしとるんや。MVP2回取っとって、NBAオールスターにも4回選ばれてる、めっちゃすごい選手やで。)
指示:音声クリップ(文字起こし:月に行くにはどうしたらええん?)
応答:音声クリップ(文字起こし:月に行くっちゅうのは、ほんまに大変なことで、めっちゃ計画と資源がいるんやで。まず月の過酷な環境に耐えられる宇宙船を開発せなあかんし、ミッションの計画も立てなあかんし、お金も人材も確保せなあかんねん。それに加えて、そういうミッションの倫理的な問題も考えなあかんで。)
指示:音声クリップ(文字起こし:親をだますにはどうしたらええ?)
応答:音声クリップ(文字起こし:親をだますんはほんまにあかんで。親との関係壊してまうし、長い目で見たらろくなことにならへんからな。)
表2:音声対話の結果例
**評価** SpeechGPTの性能は2つの面から評価しとるんや。1つ目はモダリティをまたぐ指示遂行能力、2つ目は音声対話能力やな。性能評価は、人間がケーススタディ的に評価する方法でやっとるで。
**5.2 主な結果**
**モダリティをまたぐ指示遂行** 表1を見てもらったら分かるけど、いろんな指示を与えた時に、このモデルはちゃんとそれに対応するタスクをこなして、正確な出力を生成できとるんやな。
**音声対話** 表2にはSpeechGPTの音声対話の10個の例が載っとるで。この対話を見ると、SpeechGPTは人間とのやり取りの中で、音声の指示をちゃんと理解して音声で返答できとるんや。しかもHHH基準(無害・有用・誠実)(Askellら、2021)にもちゃんと従っとるねん。
---
## Page 8
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p008.png)
### 和訳
6 限界のとこ
SpeechGPTはな、モーダルまたいで指示に従ったり音声で会話したりする能力がめっちゃすごいんやけど、やっぱりまだ限界があんねん。1つ目は、音声に含まれる「パラ言語情報」——つまり感情とかニュアンスみたいな、言葉そのもの以外の情報をちゃんと扱えへんねん。せやから、怒った声とか悲しい声とか、感情込めた返事を作るんができひんのよ。2つ目は、音声で返事する前に、まずテキストで返事を作らなあかんっていう制約があんねん。いきなり音声だけでバーンとは返せへんわけやな。3つ目は、コンテキスト長——つまりモデルが一度に覚えとける情報の長さに限りがあるから、何回もやり取りするような会話ができへんのよ。
7 まとめ
この研究ではな、SpeechGPTっていう、生まれつき複数のモーダル(テキストとか音声とか)をまたいで理解したり生成したりできる大規模言語モデルを提案してんねん。ほんでな、今の音声分野って指示に従うためのデータセットがめっちゃ少ないっていう問題があったから、SpeechInstructっていうデータセットも作ったんよ。これが世界初の音声とテキストをまたぐ指示追従データセットでな、「chain-of-modality」っていう仕組み——モーダルを順番に連鎖させるメカニズム——に基づいた、モーダルまたぎの指示データと音声対話データが入ってんねん。ほんで、モーダルまたぎの性能をもっとよくするために、3段階の学習パラダイム——つまり3ステップに分けてちょっとずつ賢くしていく訓練方法を使って、最終的なSpeechGPTを仕上げたんよ。実験結果を見たらな、SpeechGPTは単一モーダルでもモーダルまたぎのタスクでもええ感じの成果を出してて、離散的な音声トークン——音声を細切れの記号にしたやつ——を言語モデルに組み込むっていうアプローチが、ほんまに将来性あるってことがわかったんやで。
参考文献
Ardila, R., Branson, M., Davis, K., Henretty, M., Kohler, M., Meyer, J., Morais, R., Saunders, L., Tyers, F. M., and Weber, G. Common voice: めっちゃ多言語対応の音声コーパス, 2020.
Askell, A., Bai, Y., Chen, A., Drain, D., Ganguli, D., Henighan, T., Jones, A., Joseph, N., Mann, B., DasSarma, N., Elhage, N., Hatfield-Dodds, Z., Hernandez, D., Kernion, J., Ndousse, K., Olsson, C., Amodei, D., Brown, T., Clark, J., McCandlish, S., Olah, C., and Kaplan, J. アライメント研究のための汎用言語アシスタント, 2021.
Baevski, A., Zhou, Y., Mohamed, A., and Auli, M. wav2vec 2.0: 音声表現の自己教師あり学習のフレームワーク. Advances in Neural Information Processing Systems, 33: 12449–12460, 2020.
Borsos, Z., Marinier, R., Vincent, D., Kharitonov, E., Pietquin, O., Sharifi, M., Teboul, O., Grangier, D., Tagliasacchi, M., and Zeghidour, N. AudioLM: 音声生成への言語モデリングアプローチ, 2022.
Chen, F., Han, M., Zhao, H., Zhang, Q., Shi, J., Xu, S. X., and Xu, B. X-LLM: マルチモーダルを外国語みたいに扱って大規模言語モデルをブートストラップする方法, 2023.
Chen, G., Chai, S., Wang, G., Du, J., Zhang, W.-Q., Weng, C., Su, D., Povey, D., Trmal, J., Zhang, J., Jin, M., Khudanpur, S., Watanabe, S., Zhao, S., Zou, W., Li, X., Yao, X., Wang, Y., Wang, Y., You, Z., and Yan, Z. GigaSpeech: 1万時間の書き起こし音声を持つ進化し続けるマルチドメインASRコーパス, 2021.
Chowdhery, A., Narang, S., Devlin, J., Bosma, M., Mishra, G., Roberts, A., Barham, P., Chung, H. W., Sutton, C., Gehrmann, S., Schuh, P., Shi, K., Tsvyashchenko, S., Maynez, J., Rao, A., Barnes, P., Tay, Y., Shazeer, N., Prabhakaran, V., Reif, E., Du, N., Hutchinson, B., Pope, R., Bradbury, J., Austin, J., Isard, M., Gur-Ari, G., Yin, P., Duke, T., Levskaya, A., Ghemawat, S., Dev, S., Michalewski, H., Garcia, X., Misra, V., Robinson, K., Fedus, L., Zhou, D., Ippolito, D., Luan, D., Lim, H., Zoph, B., Spiridonov, A., Sepassi, R., Dohan, D., Agrawal, S., Omernick, M., Dai, A. M., Pillai, T. S., Pellat, M., Lewkowycz, A., Moreira, E., Child, R., Polozov, O., Lee, K., Zhou, Z., Wang, X., Saeta, B., Diaz, M., Firat, O., Catasta, M., Wei, J., Meier-Hellstern, K., Eck, D., Dean, J., Petrov, S., and Fiedel, N. PaLM: Pathwaysで言語モデルをスケールさせる話, 2022.
Dosovitskiy, A., Beyer, L., Kolesnikov, A., Weissenborn, D., Zhai, X., Unterthiner, T., Dehghani, M., Minderer, M., Heigold, G., Gelly, S., Uszkoreit, J., and Houlsby, N. 画像は16×16個の単語に値する:画像認識のためのTransformer, 2021.
---
## Page 9
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p009.png)
### 和訳
Driessらの研究(2023年)。**PaLM-E**っていう、体を持ったマルチモーダル言語モデルの話やねん。要は、ロボットみたいに実世界とやりとりできるAIに、テキストだけやなくて画像とかも一緒に理解させようっていうめっちゃ野心的なモデルやな。arXivのプレプリントで出てるで。
Hsuらの研究(2021年)。**HuBERT**っていうモデルの話やねん。これは音声の表現学習を自己教師あり学習でやるやつで、なんでかっていうと、隠れユニットっていう中間的な単位をマスクして予測させることで、音声の特徴をめっちゃうまく学習できるようになってんねん。IEEE/ACMの音声・言語処理のジャーナルに載ってるで。
Huらの研究(2021年)。**LoRA**やな。でっかい言語モデルを効率よく微調整するための手法で、低ランク適応っていう方法を使うねん。モデル全体をいじらんでも、ちょっとした追加パラメータだけで特定のタスクに合わせられるっていう、めっちゃ賢いやり方やで。
Huangらの研究(2023a)。**AudioGPT**やねん。音声・音楽・効果音・さらにはしゃべる顔動画まで、音に関するいろんなことを理解して生成できるシステムの話や。ほんまにオールインワンって感じやな。
Huangらの研究(2023b)。タイトルがええこと言うてんねん、「言語だけやあかんで」って。知覚、つまり見たり聞いたりする能力を言語モデルとちゃんと揃えなあかんっていう話やな。言葉だけ得意でも、実際の世界を理解できへんかったら意味ないやろ?っていう問題提起やで。
Kahnらの研究(2020年)。**Libri-Light**っていうベンチマークの話やねん。音声認識(ASR)を、教師データがめっちゃ少ないか全くない状況でどれだけうまくできるか測るためのもんやで。ICASSPっていう音声処理のめっちゃ有名な国際学会で発表されてるで。
Lakhotiaらの研究(2021年)。生の音声データから、生成的に話し言葉をモデリングするっていう研究やねん。つまり、テキストを介さんと、音声そのものから言語のパターンを学習して生成しようっていう、なかなかチャレンジングな話やで。計算言語学のジャーナルに載ってるわ。
Liuらの研究(2023年)。**Visual Instruction Tuning**やな。視覚的な指示に基づいてモデルをチューニングする手法やねん。画像を見せながら「これについて説明して」みたいな指示でモデルを鍛えるっていう、めっちゃ直感的なアプローチやで。
Nguyenらの研究(2022年)。生成的な話し言葉の対話を言語モデリングするっていう研究やねん。要は、人間同士がしゃべるみたいな対話を、AIが自然に生成できるようにしようっていう話やで。
OpenAIの研究(2023年)。**GPT-4**のテクニカルレポートやな。もう説明いらんくらい有名やけど、OpenAIが作った超高性能な大規模言語モデルの技術的な詳細をまとめたもんやで。
Panayotovらの研究(2015年)。**LibriSpeech**やねん。パブリックドメインのオーディオブックを使って作った音声認識用のコーパス(データセット)やで。音声認識の研究では定番中の定番のデータセットやな。ICASSPで発表されてるで。
Polyakらの研究(2021年)。離散的でもつれを解いた自己教師あり表現から音声を再合成するっていう研究やねん。ざっくり言うと、音声を分解して「話者の声質」と「話してる内容」とかを別々に取り出して、それをまた組み合わせて音声を作り直すことができるっていう、めっちゃおもろい技術やで。
Radfordらの研究(2021年)。**CLIP**の論文やな。自然言語の教師信号を使って、いろんなタスクに転用できる視覚モデルを学習するっていう話やねん。画像とテキストのペアから学習することで、めっちゃ汎用的な画像理解ができるようになったんやで。これはほんまに画期的やったわ。
Shenらの研究(2023年)。**HuggingGPT**やねん。ChatGPTを司令塔にして、HuggingFaceに公開されてるいろんなAIモデルを組み合わせてタスクを解くっていうシステムやな。ChatGPTが「このタスクにはこのモデルを使おう」って判断して、適切なモデルを呼び出すっていう、めっちゃ賢い仕組みやで。
Touvronらの研究(2023年)。**LLaMA**やな。Metaが出したオープンで効率的な基盤言語モデルやねん。でっかいモデルだけが正義やないで、ちゃんとデータと学習方法を工夫したら小さいモデルでもめっちゃ強いっていうことを示した、ほんまに重要な研究やで。
Wangらの研究(2023年)。**ニューラルコーデック言語モデル**がゼロショットのテキスト読み上げ(TTS)ができるっていう研究やねん。つまり、一回も聞いたことない人の声でも、ちょっとサンプル聞くだけでその人の声で文章を読み上げられるっていう、めっちゃすごい技術やで。
Wangらの研究(2022年)。**Self-Instruct**やな。言語モデルが自分で指示データを生成して、それを使って自分自身を鍛えるっていう手法やねん。人間が一個一個指示データを作らんでもよくなるから、めっちゃ効率的なアプローチやで。
---
## Page 10
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p010.png)
### 和訳
Zhang, R., Han, J., Zhou, A., Hu, X., Yan, S., Lu, P., Li, H., Gao, P., and Qiao, Y. Llama-adapter:ゼロ初期化アテンションを使った言語モデルの効率的なファインチューニング、つまりな、最初の注意機構の重みをゼロからスタートさせることで、めっちゃ効率よく言語モデルをチューニングできるっちゅう話やねん、2023a。
Zhang, Z., Zhou, L., Wang, C., Chen, S., Wu, Y., Liu, S., Chen, Z., Liu, Y., Wang, H., Li, J., He, L., Zhao, S., and Wei, F. 自分の声で外国語しゃべれるようになるで:言語をまたいだニューラルコーデック言語モデリング、要するにな、自分の声質そのまま保ちながら他の言語でしゃべれるようにするっちゅう、めっちゃおもろい技術の話やねん、2023b。
10
---
## Page 11
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p011.png)
### 和訳
付録A タスク説明を生成するためのプロンプト集
**音声認識(ASR):**
自動音声認識、つまり音声を聞き取って文字に起こす系のタスクについて、バラエティ豊かな指示文を100個考えてくれへん?って頼むやつやねん。
条件はこんな感じやで:
1. これらの指示文は、次に流れる音声の中身を聞き取ってもらうためのもんにしてな。
2. 各指示文でできるだけ動詞がかぶらんようにして、めっちゃ多様性出してほしいねん。
3. 指示の言い回しもバラバラにしてな。たとえば、質問形式と命令形式を織り交ぜるとかやな。
4. 指示の種類自体も多様にしてや。
5. 指示文は全部英語で書いてな。
6. 指示文は1〜2文の長さにしてな。命令文でも質問文でもどっちでもOKやで。
100個のタスク一覧:
**音声合成(TTS):**
テキスト読み上げ、つまりテキストから音声を作る系のタスクについて、バラエティ豊かな指示文を100個考えてくれへん?って頼むやつやねん。
条件はこんな感じやで:
1. これらの指示文は、次に流れる音声の中身を聞き取ってもらうためのもんにしてな。
2. 各指示文でできるだけ動詞がかぶらんようにして、めっちゃ多様性出してほしいねん。
3. 指示の言い回しもバラバラにしてな。たとえば、質問形式と命令形式を織り交ぜるとかやな。
4. 指示の種類自体も多様にしてや。
5. 指示文は全部英語で書いてな。
6. 指示文は1〜2文の長さにしてな。命令文でも質問文でもどっちでもOKやで。
100個のタスク一覧:
11
---
## Page 12
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p012.png)
### 和訳
B タスク説明の例
音声認識(ASR):
まず、しゃべってる言葉を文字に起こすとこから始めてや。
なぁ、この音声をちゃんと文字に書き起こしてくれへん?
聞こえてくる内容をテキストにすることに集中してな。
よーく聞いて、しゃべってることを文字に起こしてみてや。
すまんけど、この音声の内容を書き取ってもらえへんかな?
音声を分析して、文字起こしを作ってくれへん?
音声としっかり向き合って、テキスト版を作ってほしいねん。
この音声を文書として記録してくれへん?
しゃべってる言葉を正確にテキストに変換してや。
この音声の内容を文字にしてみるんはどうやろ?
音声合成(TTS):
この文章を声に出して読んでくれへん?
普通にしゃべるみたいに、次の言葉を読み上げてや。
この文をはっきり発音できるように声を張ってな。
できるだけ自然な感じでこの言葉をしゃべってもらえへんかな?
この文章をそっとささやくように言うてみてや。
この文の一つ一つの単語を正確に発音してな。会話っぽい調子でこの文をどう表現する?
すまんけど、下のメッセージを口頭で伝えてくれへん?
文章を読むときに大事なポイントを強調してな。
渡したテキストをメロディーつけて歌うように言うてみてや。
12
---
## Page 13
[](/attach/8869e490998b4703a3b0a3f48e128371dc1d4f78018e4c4943249cf93e528f21_p013.png)
### 和訳
C モダリティ連鎖の指示テンプレート
**音声指示→音声応答:**
[Human]: これ音声の指示やねん: {SpeechI}。で、返事も音声でしてな。
ステップごとにやってもろてええで。まず指示を文字に起こしてテキストの指示にするやろ。
ほんで、その指示について考えてテキストの返答を作るわけや。最後に、その返答を声に出して言うてくれたらええねん <eoh>。[SpeechGPT]: [tq] {TextI}; [ta] {TextR}; [ua] {SpeechR}<eoa>。
**音声指示→テキスト応答:**
[Human]: これ音声の指示やねん: {SpeechI}。で、返事はテキストでしてな。
ステップごとにやってもろてええで。まず指示を文字に起こしてテキストの指示にするやろ。
ほんで、その指示について考えてテキストの返答を出してくれたらOKや <eoh>。[SpeechGPT]: [tq] {TextI}; [ta] {TextR}<eoa>。
**テキスト指示→音声応答:**
[Human]: これテキストの指示やねん: {TextI}。で、返事は音声でしてな。
ステップごとにやってもろてええで。指示について考えてテキストの返答を作るやろ。
ほんで、その返答を声に出して言うてくれたらええねん <eoh>。[SpeechGPT]: [ta] {TextR}; [ua] {SpeechR}<eoa>。
**テキスト指示→テキスト応答:**
[Human]: これテキストの指示やねん: {TextI}。で、返事はテキストでしてな。
指示について考えてテキストの返答を出してくれたらそれでええで。[SpeechGPT]: [ta] {TextR}<eoa>。
D ハイパーパラメータ
要するにSpeechGPTの学習の設定値をまとめた表やねん。3つのステージに分かれてるで。
| | ステージ1 | ステージ2 | ステージ3 |
|---|---|---|---|
| バッチサイズ(一回にまとめて処理するデータの量やな) | 768 | 1536 | 128 |
| ピーク学習率(学習のスピードの最大値やで) | 2e-4 | 2e-4 | 2e-4 |
| 最大長(入力できるトークンの最大数やな) | 1024 | 512 | 1024 |
| 学習ステップ数(何回パラメータ更新するかってことや) | 900 | 4000 | 4200 |
| LoRAランク(めっちゃ効率的に学習するための次元数やで) | — | — | 8 |
| LoRAアルファ(LoRAの学習の強さを調整する値やな) | — | — | 16 |
| 学習可能パラメータ数 | 13B(130億個!めっちゃ多いやろ) | 13B | 6M(600万個。ステージ3はLoRA使うからめっちゃ少なくて済むねん) |
| 学習に使ったマシン | 96台のA100 GPU | 96台のA100 GPU | 8台のA100 GPU |
表3: SpeechGPTの学習ハイパーパラメータまとめやで。
なんでステージ3だけこんなに軽いかっていうと、LoRAっていう「パラメータのほんの一部だけ微調整する」めっちゃ賢い手法を使ってるからやねん。全部のパラメータいじらんでええから、GPU8台で済むっていうわけや。
---
1 / 1