【IVRy入社エントリ】 株式会社IVRyに入社しました
こんにちは、こちらのnoteでは約3年ぶりになりました。べいえりあです。
この度、株式会社IVRyにAIエンジニアとして入社することになったので、入社エントリを書きたいと思います。
軽く自己紹介
こちらのTwitterアカウントの中の人です。
元々、大学院時代は理論物理(超弦理論)をやっていて、ミシガン大学アナーバー校でPhDをとったのですが、その後情報系に転向し、ニューヨーク大学のデータサイエンスの修士課程に入り直しました。
以降はずっと機械学習をやっています。
大学院卒業後は、ニューヨークの郊外にあるIBMの研究所の機械翻訳チームに機械学習エンジニアとして就職しました。
その後、ITの聖地であるサンフランシスコベイエリアで一度働いてみたいと思い、Googleに転職し、Google Assistantの自然言語理解チーム(の中の一チーム)でテックリードなどをやっておりました。
そこから日本に戻り、前職の日本国内の医療系スタートアップを経て今に至ります。
前職は2022年の9月末で退職して、直近はフリーランスの機械学習エンジニアとしていくつかのスタートアップで業務委託しておりました。
専門は機械学習の中でも自然言語処理(NLP)で、ニューヨーク大学で修士やっていた時に始めて10年近くやっています。
LLMとの出会いとfew-shot NLP時代の幕開け
こちらは入社エントリではあるのですが、今回の転職の判断に大きな影響を与えたのがChatGPTなどのOpenAI社のGPT系のモデルに代表される大規模言語モデル(LLM)なので、そちらについて少し書いておきます。
前職の医療系スタートアップを2022年の9月末で退職したのですが、辞めた直後くらいは仕事してなかった/業務委託は週2くらいでしかやっていなかったので、勉強したり自分で事業しようかと思って最新技術を触ったりしていました。
そこで出会ったのがLLMの先駆けとなったGPT-3でした。
一応、前職でT5やBART辺りまでの(中規模?)言語モデルは使っていたのと、GPT-3についても論文は読んで知っていたので、凄いというのは分かっていたつもりだったのですが、実際に触ってみたら想像以上でした。
まず、GPT-3が出てくるまでの前提として、NLPの世界ではデータを如何に効率良く集めるかが開発においてクリティカルになるというのが常識でした。
Word2vecに始まり、ELMo、BERTなどの事前学習済みモデルが出て必要な学習データの量が激減し、その後のBERTの派生モデルで更に必要なデータ量は順調に減っていってはいたものの、実用的な精度を出すためには(タスクにもよりますが)少なくとも数百~数千くらいのデータは必要だったと思います。
勿論、データの収集には時間がかかるわけで、まず最初のデータ収集で数か月、そのデータを元にモデルを作っても大抵の場合は問題が出てくるので、追加のデータ収集やデータの整理を行うのに大体数週間というイテレーションを何度も重ねていく必要がありました。
GPT-3はBERTなどから続いていた必要な学習データ量の減少の流れを更に押し進めて、プロンプトで指示を出せば、学習データ無しまたは数例程度の学習データでも実用的な精度を出せるようになったのです。
これは革命的で、最初のデータ収集に必要だった数か月が数時間のレベルでできるようになり、その後の改善のイテレーションがものの数分でできるようになったわけです。
特に、この傾向は深い専門知識を必要としない分野において顕著で、例えば医療や法律のように深い専門知識が必要な分野だと相変わらずある程度の学習データは必要になると思うのですが、そこまで深い専門性を必要としない分野を広く攻めるのには最適な技術だと感じました。
これはNLPエンジニアの仕事の仕方が劇的に変わるぞと思いました。そして、NLPエンジニアとして自分もこの流れに乗るしかないと強く感じました。
こんな経験を経て、今後しばらくはLLMをいじり倒せる環境に身を置きたいと思うようになりました。
IVRyとの出会い
IVRyと出会ったのは2023年の2月初めくらいだと思います。
CEOの奥西の共通の知り合いから会社を紹介されたのがきっかけでした。
最初に話した際に「業務委託でやってみない?」と言われ、当時はフルタイムで働いていなかったので暇していたのと、ちゃんとお金を稼ごうと思い、じゃあやるかくらいの軽いノリで始めました。
ちなみに今だから書けるのですが、最初の印象は特に良かったわけでも悪かったわけでもなく、ただ「無」という感じでした。最初は週一稼働だったし、本当にノリで始めた感じです。
ただ、IVRyのメインのサービスである電話の自動応答は、これまで自分がやってきた仕事と結構共通点が多かったので、自分のスキルは活かせそうという感じは当時からしていた気がします。
業務委託を始めた当初は比較的枯れた技術を使って情報抽出や文書分類などのNLPタスクを解いていました。
ただ、会社のサービスについて知っていくうちに「あれ、これ大体LLMが最適解なんじゃね?」と思えてきて、実際にLLMで上手く解けた問題がいろいろあったので仕事がどんどん面白くなっていった気がしています。
入社のきっかけ
業務委託から正社員に切り替えようと思ったのは、LLMを使って世の中に無くてはならないサービスを作る上でIVRyは非常に良い環境である、と思えたのが大きかったです。
こう思えた流れを順を追って説明してみようと思います。
IVRyには既に広く使われているサービスがある
IVRyは安価に誰でも使用できる電話自動応答サービスです。
下記のインフォグラフィックスにもある通り、アカウント数は6000を超えており、導入業界も多岐に渡り、かつ今も伸び続けているサービスです。
参考までにこちらがインフォグラフィックスのサイトで、上記以外の情報もいろいろ書いてあります。
LLMを使ったサービスを作る上でゼロからサービスを作るというのもアリだとは思うのですが、既にあるサービスに機能を載せるよりは難易度は跳ね上がります。
実際、LLMでゼロからサービスを作って上手くいっているものは世界を見てもほとんど無いと思っていて、既存サービスに載せる方が「手堅い」かと思います。
その意味で「既に広く使われているサービスを既に持っている」というのは魅力的でした。
ただ、既存サービスに載せる形だとどうしてもゼロから作るよりもインパクトは小さくなりがちなので、サービスの中でLLMがクリティカルな役割を果たすというところはこだわっていきたいところでした。
サービスを更に成長させる上で、LLMが「肝」となる
IVRyがもっと広く使われるようになるには超えなければならない障壁がいくつもあると思っています。
実際はもっとたくさんあると思うのですが、その内のいくつか挙げると、
現状のボタンプッシュ方式(サービスからの質問にユーザーが番号を押して答える)では複雑な入力(日時、名前など)に対応できないため、利用用途が限定される(予約や注文は難しい)
ボタンの数が限られるのでユーザーの多様な要望に対応できない
複雑な入力を処理するため、またユーザーの多様な要望に対応するために入力を自由発話にする方法はあるが、多様な表現や意図しない会話の流れに対応するのが難しい
などです。
これらの問題を解いていきたいのですが、電話の自動応答に特有と言うほどではないものの特徴的な制約条件として、
業界によって会話の流れやユーザーが知りたい情報、システムがユーザーに聞かなければならない情報は非常に異なるので、業界に特化した形ではなく、様々な業界にスケールできる形で解かなければならない
というのがあります。
業界特化してしまうとマーケットサイズが限定されてしまうからです。
上記の問題を解く一番安直な方法はたくさんルールを定義したり、またはそれらのルールを機械学習を用いてデータから学習することによって、表現や要望や会話の流れの多様性に対応できるようにするだと思います。
実際、機械学習を使って予約などの様々な問い合わせに対応するサービスは既にいくつか出ています。
ただ、ルールベースや従来の機械学習だと特定の業界に対して作り込めば解けると思うのですが、「様々な業界にスケールさせる」というのが容易ではないです。
ルールベースであれば業界毎のルールが必要だし、機械学習にしても業界毎の学習データを集める必要が出てくるからです。
ここでLLMが登場します。従来の機械学習だとどうしても必要だった学習データの収集が、LLMによって最小限で済むようになるわけです。
さらに言うと、上でLLMは「そこまで深い専門性を必要としない分野を広く攻めるのに最適な技術」と書きましたが、電話の自動応答はそこまで専門的な知識を必要とせず、LLMが既に知っていて学習データ無しでも十分な精度が出るという意味で、業界を超えてスケールさせるという意味では最適な技術であると感じました。
勿論、「出力が必ずしも安定しない」「嘘をつく」などのLLMに特有の問題もあり、分野的に嘘の情報を顧客に教えるのは許容できない(嘘の営業時間を教えたらお店の信頼に関わる、など)ので、それらを乗り越えないといけない(そしてそれは簡単ではない)のですが、それらを克服できればLLMは大きな武器になります。
IVRyでは先月、実サービスへの適用に先駆けてレストラン予約の自動応答のデモをリリースしました。
こちらは「レストラン予約の自動応答サービスを作る」という方針で作ったわけではなく、「問い合わせの汎用的なシステムがあり、それをレストラン予約に適用する」という方針で作ったのですが、それでいて(自分たちで言うのも何ですが)レストラン予約のシステムとして十分実用に耐えうるものになっていると思っています。
このように実際に作ってみて、LLMを使えばサービスを大きく成長させられるという確かな手応えが得られたことが、入社判断の大きな根拠になったような気がしています。
一応のレストランの予約システムは出来たものの、様々な業界に広げたかったり、個々のレストランの特別なリクエスト(コース予約を受け付けたい、など)の対応が必要だったり、上記の「意図しない会話の流れ」も一部しか対応できていなかったり、まだまだやらないといけないことは山ほどあるのですが、これらをスケーラブルな形で解くのは非常にチャレンジングで面白いんじゃないかと思っています。
IVRyはLLMの開発が非常にやりやすい
最後に、会社のカルチャーについての話なのですが、IVRyではユーザーの体験が非常に大切にされているように思います。
サービスの体験評価を数値化する、ということが頻繁に行われている気がしますし、社員の皆さんも積極的に作ったサービスを試してフィードバックをくれる気がしています。
このカルチャーは勿論プロダクトを改善する上で非常に良いと思うのですが、それに加えてLLMを含む機械学習の開発とも非常に相性が良いと思っています。
機械学習においてはモデルを改善するために改善と評価のイテレーションを何度も回さないといけないと思うのですが、このように使った人の声を頻繁に聞けるカルチャーがあると、生成AIのような評価がやりづらいものであっても人手評価を元に高速にイテレーションを回すのがやりやすくなります。
上記のレストラン予約の自動応答を作っていた時は、週次でサービスを使ってもらって人手での体験評価をしてもらっていたので、改善のイテレーションを高速に回すことができて短期間でリリースに持っていくことができました。
あとは最新技術好きな会社だと思うので、何らかの形で業務に役立つのであれば最新技術を使ってみるのはやりやすいかと思います。
今回の記事では主にLLMの話をしましたが、電話の自動応答だと音声認識や音声合成も重要なので、社内で音声合成の検証などはやったりしています。
最後に
IVRyでは一緒にサービスを良くしてくれるAIエンジニアを絶賛募集中です。
世間では「LLMを使ってクールなデモを作るのは簡単だが、実サービスを作るのは難しい」とよく言われていると思うのですがその通りだと思っていて、現状、日本でLLMを使ってPMFできそうなサービスを出しているところは少ないと思っています。
そんな中、IVRyはLLMを使って世の中に広く使ってもらえるサービスを開発できる数少ない会社の一つだと思っています。
皆さんもLLMをいじり倒しつつ、一緒に世の中を良くしてみませんか?