初心者でも作れる!対話AIの作り方とAIの仕組み!

最近、AI技術の進歩が良く話題になりますよね。そんな中で、

AIシステム、特にDeep Learningなどの機械学習を組み込んだシステムを作ってみたい!

という方、多いんじゃないですか?

AIを使ったシステムは既にいろんなところで実用化されています。こんなシステムを作るにはどうすればいいのか、この記事で解説していきます!

この記事ではまずはじめにAIシステムの作り方を簡単3ステップに分けて解説します。そしてそれを参考にして、「対話AIシステムが簡単に作れるAPI」と行った応用的な内容のご紹介をします。

この記事で、実際にAIを使ったシステムの作り方を学んでいきましょう!

AIの作り方3ステップを理解!

ai_tsukurikata_diagram

画像:shutter stoc

まずはAI、特にDeep Learningなどの機械学習を組み込んだシステムの作り方を3ステップに分けて解説します!

機械学習と言っても色々ありますが、ここでは「教師あり学習」と呼ばれるものについて考えていきます。

さて、AIを使ったシステムを作成する流れを大きく分けると以下の3ステップです。

  • データを集める
  • モデルを学習させる
  • システムに組み込む

この3ステップを詳しく見ていきましょう!

①データを集める

データ解析などでもそうですが、「データを集める」ステップが一番時間がかかります。機械学習を使って、例えば対話システムを作ると考えましょう。

AIさんに「元気ですか?」に対する返答を覚えてもらいたい時、

  • Aさん「元気ですか?」→Bさん「元気だよ!」
  • Aさん「元気ですか?」→Bさん「まあまあかな」
  • Aさん「元気ですか?」→Bさん「寝不足なんだよね」

このような会話のデータを膨大な数集めます。

このデータを集める方法としては

  • 無償・有償で公開されているデータセット使う
  • TwitterなどのSNSから自分で集める
  • その他インターネット上にあるデータを自分で集める

などの方法がありそうです。

インターネット上にあるデータは、多くの場合何かしらかの形で「コンピュータに分かりやすい形」に構造化されています。例えばHTMLなどがそれですね。

それを機械学習で使いやすいように前処理する必要があります。例えばHTMLタグを抜いたり、必要ならば絵文字を削除したりが必要ですね。

では別の例でも考えてみましょう。例えば「写真に映っているのが犬なのか猫なのかを識別するシステム」を作りたいとしましょう。

ai_study_image_recog_sys_dataset

画像:shutter stoc

その時には「犬または猫が映った画像」と「その画像に映っているのが犬なのか猫なのかが分かる情報(=ラベル)」がセットになったデータを大量に集めなければなりません。

このような作業をまとめて「データを集める」ステップとここでは呼ぶことにします。

②モデルを学習させる

データを集めたら、実際の機械学習モデル(アルゴリズム)を学習させます。

イヌとネコを分類する問題を例にして考えてみましょう。

  • 「識別したい画像」を機械学習モデルに入力する
  • 機械学習モデルに「予測ラベル(ここではイヌかネコか)」を出力させる
  • 教師データを参考に「画像の本当のラベルと比較する」
  • 「本当のラベルを出力できるように機械学習モデルを修正する」

これを繰り返すことでイヌかネコかを識別するモデルを学習します。

ai_study_image_recog_sys

画像:shutter stoc

例えば正解ラベルがイヌかネコかの2つしか無いのなら、イヌを1、ネコを0にしてあげればコンピュータ上でラベルを簡単に扱えますね。

さて、もうちょっと詳しく学習の仕組みを見ていきましょう。

中学校でやったような、y=f(ax+b)という関数があります。ここでt=ax+bとおけばy=f(t)ですね。fはよくわからない関数ですが、数字を与えられると必ず0~1の範囲で答えを返します

Sigmoid-function-2.svg
引用元:Semantic Scholar TOWARDS SUICIDE PREVENTION: EARLY DETECTION OF DEPRESSION ON SOCIAL MEDIA

ここでこの関数fを上の図の関数だとしましょう。これならば、t=ax+bの値がどんな値でも、0~1の範囲に収まる値を返しそうです。

さてここで、xがネコやイヌの画像を数字にしたものだとすると、ネコの時にy=0、イヌの時にy=1になるような関数にするには、aとbの値をいじってあげれば良いことが分かります。

このaとbをパラメータと呼びます。

ニューラルネットワークなどの機械学習モデルでは、関数が目的の出力yを返すようにパラメータを修正することを学習と呼んでいます。後はこの関数がもっと大規模で複雑になったものが機械学習モデルだと思ってください。

ですので、機械学習では最終的に、全てを数字に置き換えて扱う必要があります。

  • 入力するデータ
  • 出力する値
  • 正解ラベル

これらを数字やいくつかの数字の組み合わせ(ベクトル・行列など)で表すことができるのならば、得手不得手はありますが機械学習で扱うことができそうです。

また、私達人間が頭を悩ませて、良さそうなaとbを探すことでもモデルを調整することはできますが、実際の機械学習モデルの学習フェーズでは、このパラメータの修正も自動で行ってくれるアルゴリズムを使います。

③システムに組み込む

さて、機械学習モデルの学習が終わっても、システム全体としてはまだ完成ではないですね。

例えばUI(ユーザーインターフェース)の実装が必要になります。

SNS上で動く対話システムを作るのであれば、SNSから対話システム宛てに投げられた「問いかけ」を受け取る機能と、SNS上に「返答」を返す機能が必要です。

Webアプリで画像分類を行うなら、ユーザーが画像をシステムにアップロードする機能や、分類結果をWebブラウザで表示する機能を追加しないといけません。また、必要であればデータベースなどとも連携する必要があります。

これらを作ることで、ようやくAIを使ったシステムが完成します。

対話AIを作ってみよう!

ai_tsukurikata_interactive_sys

画像:shutter stoc

手軽に対話システムを実装するには、IT企業が公開しているAPIを使うのが近道です。APIとは、「ソフトウェアの一部をWEB上で公開する事によって、誰でも外部から利用する事ができる」機能です。

※APIという用語が気になったら以下の記事をチェックしてみてください!

さて、この記事では対話システムを作るためのAPIを紹介しましょう。

対話システムが作れるAPIはいくつかありますが、ここでは有名所を2つ紹介します。

docomo:自然対話API

自然対話 API はdocomoが公開している対話システムのAPIです。

ブログなどでは、docomoの雑談対話APIの紹介が多いですが、そちらのAPIは2018年6月末に廃止予定です。

この自然対話APIを使えば、自分で対話システムの機械学習部分を自力で作ること無く、対話システムを作れます。

RECRUIT:Talk API

Talk APIは、RECRUITが公開している日常会話応答機能を提供してくれるAPIです。

このAPIでは、Recurrent Neural Network(RNN)という時系列データに適したニューラルネットワークの派生であるLong short-term memory(LSTM)を使ったシステムが利用できます。

RNN・LSTMといえばDeep Learningに連なるニューラルネットワークモデルです。

最近流行りのDeep Learning/ニューラルネットワークのパワーを体験してみたいなら、このAPIを使ってみたいところですね。

AI勉強を始めよう!

ai_tsukurikata_start_study

画像:shutter stoc

前の章では、対話AIシステムをdocomo apiやRECRUIT apiを使って実装する方法を紹介しました。

もっと何かに特化した対話システムを作りたい。
自分で一から作ってみたい。

と思ったら、深層学習を始めとしたAI分野の勉強を始めましょう!

AI分野の勉強コンテンツはたくさんありますが、大きく分けて4つの方法を紹介します!

  • 参考書で独習する
  • Webコンテンツで独習する
  • 勉強会で学ぶ
  • オンラインスクールで勉強する

現状で手軽に勉強を始めるなら、この4つが選択肢になります。

これ以外にも、専門の大学に行くという最も手堅い方法もあります。ライフスタイルに合うか考えて選んでみてください。

さて、上の4つについては、侍で記事を公開していますので、是非参考にしてください。

これで完璧!AIを独学で習得したい人向けのおすすめ勉強方法まとめ
更新日 : 2020年5月13日

また、侍では機械学習を三ヶ月から六ヶ月程度の期間で習得するためのプログラミングスクールを開講しています。

本腰を入れて勉強したい方、是非チェックしてみてください!

まとめ

この記事ではAIシステムの作り方、特に機械学習の「教師あり学習」に注目して解説しました。

また、より機械学習を手軽に使うために、いろんな企業が公開している学習済みの機械学習システムが使えるAPIについても解説しました。

まとめると、AIを使うシステムを作るには以下の2つの選択肢があります。

  • 大手IT企業が公開してくれているAPIを使って手軽に作る
  • 自分でAIを勉強してデータ集めから頑張って作る

また、対話システム、画像認識システム、音声認識システムなど、様々なAI技術が手軽に試せる&実装できるようになってきていますので、ドンドン試して面白いAIを活用したシステムを作ってみてください。

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー