チャットボットが会話できるのはなぜか?学習の仕組みと賢くする方法を非エンジニア向けにわかりやすく解説

最終更新日:2018年3月12日
このブログはAIを活用したチャットボットやFAQシステムを提供する、株式会社サイシードが作成しています。
最新の事例や企業での活用方法を紹介していきますので、ぜひ参考にしてみてください!

開発 西田
最近色々なメディアでAI(人工知能)を搭載したチャットボットが話題になっていますが、
皆さん、チャットボットがどのように学習して賢くなるって知ってますか?
『様々なデータをとりあえず放り込んだら、人工知能が勝手に考えて、どんな質問にでも答えられるチャットボットが出来上がるんじゃないの?』と考えている人も多いですが、さすがにそれほど賢くありません。
今回は、AI搭載のチャットボットが質問に対してどうやって回答し、どのようにして学習していくのかをわかりやすくお伝えします!
また、この記事の最後で『常識を覆す!チャットボットの精度が格段に向上する学習法マニュアル』をプレゼントしますので、ぜひ最後までお付き合いくださいね。

チャットボットが質問に回答する手順と賢くなるための条件

開発 西田
前提として、チャットボットは自分で考えて言葉を生み出すことはできません。
チャットボットが人の質問に答えるには、あらかじめ『FAQ』や『QA』と呼ばれる、「こう聞かれたらこう返す」質問と回答のセットをデータベースに登録しておく必要があります。
そしてチャットボットは新たに質問が来たとき、そのデータベースに照らし合わせながら、最も近い質問の回答を導きます。

チャットボットが回答を導き出す3つの手順

例えば、『PCの操作方法に関する質問に答えるBot』があるとすると、AIが回答する手順は下記のようになります。

  1. まず、想定される質問と答えをデータベースに登録しておきます。
  2. 例えば、
    Q1:エクセルでセルの書式までコピーされてしまう。
    A1:値の貼り付けで…
    Q2:ネットにつながらないのですが、どうすればいいですか?
    A2:ネットワーク設定を開き…
    Etc…

  3. 次に、AIが聞かれた質問を分析し、最も一致する質問文をデータベースの中から選ぶ
  4. 最後に、その質問文と紐付いた回答を表示する
実際にチャットボットを使うには、まずこのQAのセットを整備する必要があります。
過去の問い合わせ対応履歴が時系列順に蓄積されている場合、まずはそこから基本となるFAQを作る必要があるので、地道な整備作業が発生します。
開発 西田
チャットボットが回答するにはまずFAQの整備が必要だとわかったところで、次は「賢くなる」ための条件についてお話しします!

チャットボットが賢くなるために必要な条件は2つある

この仕組みで考えると、AIが賢くなるには「継続的なデータ整備」が必要です。
「継続的なデータ整備」で行うべきことは2つあるので、順にご説明します。

  1. データベースに登録されていない質問の追加
  2. データベースに蓄積されておらず、新しい回答を用意する必要のある質問を受けた際には、人が新たに質問と回答のセットを追加してあげる必要があります。
    こうすることで、チャットボットが対応できる質問のパターンを増やすことが出来ます。

  3. チャットボットの掲示した回答が適切であったかのフィードバック

回答(=同じ質問文だと認識した結果)が合っていたかどうか、評価が与えられないとチャットボットは賢くなりません。ユーザーやオペレーターが正誤の評価を与えてあげる必要があります。
このフィードバックを繰り返し与えることでチャットボットに学習が働き、より適切な回答を掲示できるようになります。

チャットボットが学習する仕組み

先程の条件が満たされる前提で、いよいよチャットボットがどうやって学習するかを具体的に説明していきましょう。
データベースに下記のQAが登録されているとします。
Q:PCの電源が突然切れる場合の対処法
A:落ちる原因がハードにある場合とソフトにある場合で対処法が異なります。ハードにある場合…
ユーザーはQ&Aに登録されている通り「PCの電源が突然切れる場合の対処法」と質問してくれるわけではありません。
例えば、

  • Windows XPで、利用中に突然電源が消える
  • Excelを使っていたら、パソコンの電源が突然落ちた
  • デスクトップの画面が急に暗くなったので対処法を教えてください
  • ノートパソコンの電源がいきなり切れる
  • PCを起動しようとしたら強制終了されます

といったように、同じ回答を求めていても質問の仕方は異なりますよね。
では、チャットボットはどのようにして異なる表現の質問群から同じ回答を求めていると導き出しているのでしょうか?

『キーワード』により内容を判断を判断する

チャットボットはまずこれらの質問文を全て、『キーワード』に分解します。
例えば、

  • Windows XPで、利用中突然電源消える
  • →Windows XP 利用中 突然 電源 消える

  • Excel使っていたら、パソコン電源突然落ちた
  • →Excel 使って パソコン 電源 突然 落ちた

  • デスクトップ画面急に暗くなったので対処教えてください
  • →デスクトップ 画面 急に 暗く 対処 法 教えて

  • ノートパソコン電源いきなり切れる
  • →ノートパソコン 電源 いきなり 切れる

  • PC起動しようとしたら強制終了されます
  • →PC 起動 しよう 強制 終了

    開発 西田
    そして、この分解されたキーワードを使って、チャットボットが「重要なキーワードのピックアップ」と「類義語の認識」を行ってくれます。詳しくは次の章で!

    1.重要なキーワードをピックアップする

    まず、分解した質問文のキーワードの中で、登場頻度の低いワードから外していき、登場頻度の高いワードを重要な「キーワード」として認識していく作業を行います。
    例えば、
    【高頻度】PC/消える/落ちた
    これらの単語は登場頻度が高いため重要だと判断されます。
    【低頻度】Excel/windows/対処
    これらの単語は登場頻度が低いため、重要でないと判断され外されていきます。

    2.類義語を認識する

    表現が異なっていても同じ意味で使われる言葉を類義語として認識します。
    具体的には、

    • PC,デスクトップ,パソコン
    • 消える,落ちる,強制終了,切れる

    「PC/デスクトップ/パソコン」は表現は異なりますが全て「PC」の意味で使われていますし、「消える/落ちる/強制終了/切れる」も全て「パソコンの電源が切れる」ことを指していると推測できますよね。
    そのため、これらの「表現は異なっていても同じ意味を指す言葉」を類義語として認識させることで、今までは認識できなかった文章も理解できるようになります。
    例えば、

    • 【PC 消える】=【PC 落ちる】
    • 【デスクトップ 落ちる】=【デスクトップ 強制終了】
    • 【パソコン 強制終了】=【パソコン 消える】

    データベースに上記の組み合わせのキーワードしか蓄積されていなかったとしても「類義語」として別の単語を登録しておくことで、
    の組み合わせも同じ意味の質問として認識できるようになります。

    AI搭載チャットボットが学習する仕組みをわかりやすいグラフで表現

    上記の学習ロジックを簡単なグラフで認識してみると、より理解しやすいと思います。
    AI搭載のチャットボットは1つ1つの質問文に対して「蓄積された各キーワード」「各キーワードの出現頻度」をとっています。
    そこで、横軸に「蓄積された各キーワード」をとり、縦軸に「キーワードごとの出現頻度」をとった、確率分布のグラフをご用意しました。

    開発 西田
    データが少ない時はなだらかで特徴のないグラフをしていますが、データの蓄積が進むと単語の出現頻度に明確な差が出てくるので、グラフはよりはっきりとした特徴を示すようになります。
    【Before】

    【After】

    新しい質問文がインプットされた時、チャットボットは蓄積されているFAQの中で最も波形が近い質問文を探し、回答を掲示します。
    そしてフィードバックで正しい評価が与えられると学習が働き、新しい質問文の新しい波形がインプットされ、適した回答を引きだせるようになります。
    上記のグラフでは単語数が10語程度ですが、実際には横軸は数万語を超えるオーダーになります。それらのオーダーでキーワードごとの特徴を出すには、1つのFAQにつき100パターン以上のデータは最低限必要になります。
    筋肉 松岡
    こうやってAIって賢くなっていくんですね。
    そうすると、使えば使うほど正答率が上がっていくわけですよね?だとしたら、まさに万能のツールじゃないですか!
    開発 西田
    まぁ、理論上はそうなるんだけど・・・、
    実は、残念なことにAIにも弱点があって完璧じゃないんだよ。
    これからAIの弱点を説明していくよ!

    導入前に考えておきたい、AI搭載チャットボットの3つの弱点

    一見完璧に思えるAIの学習ですが、実は3つの大きな弱点を抱えています。

    精度の高い回答をするには相当数のデータの蓄積が必要

    データ数が少ない場合は確率分布のグラフに特徴が現れません。
    グラフではかなり簡略化していますが、横軸の「蓄積された各キーワード」」は数万後になることもあるので、1つの回答当たり質問文のインプット数は200~300個程度は必要です。
    相当数の質問文のパターンを生成し、それらを正しい回答と紐付けるにはそれなりの期間もかかってしまいます。
    ひとことで言えば、「高精度なチャットボットにするための学習期間の長さ&データ整備の手間」がAI搭載チャットボット導入の現実的な課題です。

    複雑なキーワードを理解できない場合がある

    「形態素解析ツール」を使ってテキストを単語に分解していくのですが、例えば「水素水」というキーワードを「水素 水」「水 素水」と分けてしまったり、意図したとおりに分解されないことも多々あります。
    会社に合わせて、業界用語や社内用語を登録していく作業もかなり大変です。

    クラスタリングのミスがある

    クラスタリングとは、複数の物をまとめてひとかたまりにすることを指します。
    AI搭載のチャットボットは上記で説明したグラフを用いてキーワードを分析しますが、似ている波形を機械的に類義語として認識するので、間違った分類も多々発生します。
    例えば、「りんご」と「太陽」など意味の全く異なる単語を一度類義語と判定してしまうと、関連性のないQAを「適切な回答」だと誤認し、掲示してしまいます。

    まとめ

    開発 西田
    いかがでしょうか?今回はAI搭載のチャットボットが学習する仕組みをお届けしました!
    チャットボットを賢くするにはデータの蓄積が必要だとわかっても、問い合わせが相当多い企業を除いて、1つの回答に対して数百パターンの質問が来ることもあまり考えられません。
    また、かといって企業側で色々なパターンのQAを作成するのも効率的ではありませんよね。
    弊社なら、独自のアプローチにより最初から賢いチャットボットを提供することが出来ます。もしよろしければ、下記の資料請求フォームからお問い合わせください!
    下記のフォームから資料請求して頂けた方には『AIの学習機能を徹底解剖!常識を覆すAI精度向上術』をプレゼントさせていただきます。AI搭載チャットボットに関してお悩みがある方は是非お申込みください。
    必須お名前
    必須会社名
    必須会社電話番号
    任意メールアドレス