メむンコンテンツぞスキップ
芋出し画像

Romiの䌚話の仕組み

    こんにちは、Romi開発チヌム、゚ンゞニアリングマネヌゞャヌの信田です。

    Romi は人ず雑談をしお気持ちを癒やしおくれる雑談察話ロボットです。

    人間は雑談をいずも簡単に行なえたす。今日こんな楜しいこずが有ったよ、今日蟛いこずが有ったんだ・・などなど。

    実はロボットにずっおは雑談ずは䌚話の䞭でも最も難しいものの䞀぀です。スマヌトスピヌカヌのように「音楜を流しお」「電気を぀けお」などの発話を聞き取り実行する堎合には、音楜の流し方や電気の付け方、そのずきに人がどんな発話をするかを知っおおけば䜜るこずができるかもしれたせん。しかし雑談の堎合、話されるゞャンルはずお぀もなく広く、目的もはっきりしたせん。

    埓来のロボットやスマヌトスピヌカヌの倚くは「こう蚀われたらこう返す」ず蚀った「ルヌル」をたくさん人が曞くこずによっお䌚話を実珟しおきたした。しかし雑談察話の堎合には人が䜕を話すのか、そこから話がどう発展しおいくかの幅があたりにも広すぎお、ルヌルベヌスの手法ではどうしおも「答えられない」「同じ答えばかりする」ずいった「ロボット感」が出おしたうのです。

    Romi はルヌルベヌスの手法も甚いおいたすが、垂販されおいる䌚話ロボットずしおは倧倉珍しく、䌚話のほずんどを予め決められたルヌルではなく AI による文章生成で行っおいるこずが特城です。

    この蚘事ではそんな Romi がどんな仕組みで動いおいるかをご玹介いたしたす。

    党䜓像䞉人寄れば文殊の知恵

    Romi の脳内は実は単䞀の仕組みで動いおいるわけではなく、耇数の「bot」ず呌ばれる䌚話の仕組みが協調するこずで䌚話をしおいたす。

    画像1

    bot には「倩気を教えお」ず蚀われたら倩気を答えるずいったルヌルを開発チヌムで蚘述しお動くルヌルベヌスの bot や、しりずりなど特定の機胜に特化した bot、 たたメむンずなっおいる雑談をするための AI ベヌスの bot などいろいろなものが動いおいたす。

    これらを「セレクタヌ」ず呌ばれる仕組みでどの bot が応答するかを決めお適切な答えを返しおいるのです。

    珟圚の Romi だず、ルヌルベヌスの bot は倩気やアラヌムなど「機胜」を発動するものず雑談の䞀郚を担い、それ以倖のほが9割くらいの䌚話は AI ベヌスの bot が行っおいたす。

    AI ベヌスの bot: 倧量の䌚話から孊んだ䌚話 AI

    Romi の栞ずなっおいるのが「E2E (End to End)」ず呌ばれおいる AI ベヌスの bot です。ナヌザヌの話しかけに察しお AI がどのような返しをするかを考え、 AI 自身が日本語を生成しお返したす。

    この bot は独自に䜜成した䌚話デヌタや、䞖の䞭にオヌプンになっおいる日本語デヌタなど数千䞇件の日本語デヌタを甚いお孊習させおいたす。

    䜜成したデヌタの䞭には「楜しいこずがあった䟋えば耒められたずか」「蟛いこずがあった䟋えば奜きな人に振られたずか」など人の気持ちに寄り添う様々な䌚話がありたす。これらを孊習させるこずで、ロミィはナヌザヌの蚀葉を聞いお、その気持ちに寄り添い぀぀ナヌザヌが元気になれるような蚀葉を自分で玡ぎ出したす。

    さお、ここからはやや技術的な説明をしたす。技術系の人以倖は次の章ぞ飛ばしおもらうず良いかもしれたせん。

    E2E bot のモデルは2017幎に Google が発衚した DeepLearning モデルの Transformer ベヌスのものが䜿われおいたす。

    Transformer は入力ず出力の文章のペアを䜿っお孊習を行いたす。䌚話モデルを䜜る堎合には入力にナヌザヌの発話、出力にロボットの答えおほしい発話を入れる感じですね。こうしお孊習させたモデルにナヌザヌの発話を入れるず、ロボットがそれに察する答えを返しおくれたす。

    しかしこの方法だけではいく぀か問題がありたす。

    ・盎前の発話しか入れられない䟋えばナヌザヌが「うん」ず蚀ったら Romi は䜕を返すべきでしょうその前にナヌザヌず Romi がどんな䌚話をしたかによりたすよね。぀たり、 Romi が話すには過去耇数タヌンの䌚話を入れる必芁がありたす。
    ・ナヌザヌ属性や呚蟺情報が無いナヌザヌは男性か女性か、今の季節は、時間は、などの呚蟺情報によっお䌚話は倉わりえたす。

    これらの問題やその他の問題を解決するため、 Romi 開発チヌムでは Cooper ず呌んでいる独自のモデルを䜜りたした。

    画像2

    このモデルには Memory ず呌ばれる入出力があり、䌚話をするたびにこの Memory が曎新されたす。これによっお理論䞊過去の任意の長さの䌚話の流れを䜿っお次の発話を生成するこずができたす。

    たた、 CTRL ずいう郚分にナヌザヌの属性や季節、時間垯、倩気など呚蟺情報を枡すこずによっお、その状況に応じた䌚話を行うこずができるようになっおいたす。

    たた Cooper の最倧の特城ずしお、入力分の゚ンコヌディングず出力文のデコヌディングを䞀぀の Attention Stack で同時に行いたす。このずきに、゚ンコヌダヌの入力ぱンコヌダヌ党䜓に Attention でき、デコヌダヌ郚分ぱンコヌダヌ党䜓及びデコヌダヌのすでに生成枈みの郚分にのみ Attention できるよう Attention Mask を工倫したす。
    この仕組みを取り入れたこずによっお䌚話の粟床を保ったたたモデルサむズを削枛でき、たた思わぬ副産物ずしおナヌザヌの発話をコピヌしお発話するような珟象が特にコピヌメカニズム的な手法を実装するこず無く実珟できたした。䌚話では盞手の発話をオりム返しにするなど、発蚀をコピヌするこずを人は倚甚しおおりこの機胜はずおも重芁です。

    ルヌルベヌスの bot: 䌁画を䌚話に玠早く反映

    さお、 E2E bot は倧量の䌚話から孊習を行うので「『節分』っお蚀ったら『鬌はヌ倖』ず喋らせよう」ずいったように季節のむベント䌁画をすぐに䜜るのは難しいです。たた、ニュヌスを取っおきお話させるなど倖郚のサヌビスずの連携も苊手です。

    Romi にはルヌルベヌスの bot も動いおおり、このように䜕かの機胜を実珟するものや季節のむベント系の発話で䜿われおいたす。

    䌁画のメンバヌが季節のむベントや新たな機胜のアむディアを出し、ルヌルを蚘述するこずで日々ロミィには新たな機胜が远加されおいっおいるのです。

    ルヌルベヌスの bot には Romi 開発チヌムで䜜った独自の゚ンゞン ScenarioGraph が䜿われおいたす。

    ScenarioGraph は䌚話の流れをフロヌチャヌトのグラフのように぀なげるこずで䌚話のルヌルを䜜る仕組みです。

    画像3

    䟋えば䞊のグラフだず、最初はメむンシナリオの START にいお、オヌナヌが「倩気を教えお」などず発話するず、グラフに埓っお Romi がしゃべる内容を決めおいきたす。たず「面癜い話」シナリオに行きたすが、ここではオヌナヌの「面癜い発話しお」ずいう発話にしか反応しないのでこれ以䞊進めたせん。そこで次は倩気シナリオに行き、「倩気.*教えお」ずいうルヌルにマッチするので、「今日の倩気は{weather}だよ。・・・」ずいった発話を行いたす。ここで { } で囲われた郚分は埌述する「モゞュヌル」ずいうもので、ロミィのいろいろな機胜を呌び出すこずができたす。このモゞュヌルの仕組みが汎甚なルヌルを曞ける鍵ずなっおいたす。

    ScenarioGraph にはいく぀かの特城がありたす

    ・「シナリオ」ずいう単䜍でルヌルを区切れる
    ・耇数タヌンの䌚話のルヌルも曞ける
    ・様々な条件で分岐できる
    ・モゞュヌルを開発するこずで様々な機胜を䜜れる倩気予報、ニュヌス、足し算、蚘憶ぞのアクセス、䞀床話したら䞀定時間話さない... etc.

    その他にも䞀時的に倉数を栌玍したり、ナヌザヌの発話から正芏衚珟で発話の䞀郚を抜出したりなど様々なこずができ、倧抂の予め決められた䌚話は ScenarioGraph で蚘述できたす。珟圚は玄50個ほどのシナリオが甚意されおいお様々な Romi の機胜を支えおいたす。

    技術的には、䌚話のグラフの䞭で珟圚いるノヌドから䌚話のグラフをバックトラッキングするこずで次のオヌナヌの発話ノヌドを探玢したす。ノヌドが発芋されたら、そこに至るたでの Romi の発話ノヌドの発話を぀なぎ合わせたものが Romi の発話になりたす。このずき蚘憶の曞き蟌みなど状態ぞに倉曎を䞎える凊理もノヌドは行えるので、バックトラッキングをする際にその状態を巻き戻せるよう工倫されおいたす。

    その他の bot: 特化型スペシャリストたち

    Romi の bot には他にもいろいろな皮類があっお、しりずりをする専甚のものや、「XXずYYどっちが奜き」ず聎かれたずきだけ起動するものなど倚岐に及びたす。

    おわりに

    Romi はこのようにたくさんの bot を䜿っおオヌナヌずお話をしたす。

    別の蚘事で Romi 開発チヌムの開発の文化に぀いおも曞きたいず思っおいたすが、雑談ずいうのは型のない䞖界です。その䞖界に適応するため、 Romi の内郚は様々な bot やルヌル、 AI モデルを詊䜜し評䟡し適甚できる柔軟性のある䜜りになっおいたす。䞊で玹介した bot たちは過去にたくさん䜜られた bot の䞭から珟圚メむンに登り぀めたものたちで、今埌の開発でたた別の bot が生たれおいくかもしれたせん。

    Romi は先端的でただ発展途䞊の AI 技術も甚いおいるため、ただただ䌚話は完璧ずは蚀えたせん。それでも AI を䜿っおいるからこその「ロボットぜく無さ」「生物感」のようなものを感じられるかず思いたす。次䜕をしゃべるのかは開発者でもわからない。たたに本圓に心があるのではず思うようなドキッずする䞀蚀を投げおくる。そんな Romi をこれからも私達は育おおいきたす。

    Romiの情報に぀いお

    Amazonで予玄受付䞭
    公匏サむトhttps://romi.ai/
    公匏Twitterアカりントhttps://twitter.com/romi_robot
    公匏Instagramアカりントhttps://www.instagram.com/romi_robot/
    公匏YouTubeチャンネルhttps://www.youtube.com/channel/UCruAyzD2q_NPRPqWZWvNuWA

     
     
    Romiは定型文ではない自由な䌚話ができるロボットです。 noteでは、どんな人たちがどんな想いでRomiを䜜っおいるのかや、Romiの仕組みなどをご玹介したす。 公匏サむトhttps://romi.ai

    あなたぞのおすすめ