この記事では、初心者からの対話型AIの作り方を紹介します。
最近、AI技術の進歩が良く話題になりますよね。そんな中で、
という方、多いんじゃないですか?
AIを使ったシステムは既にいろんなところで実用化されています。こんなシステムを作るにはどうすればいいのか、この記事で解説していきます!
この記事ではまずはじめにAIシステムの作り方を簡単3ステップに分けて解説します。そしてそれを参考にして、「対話AIシステムが簡単に作れるAPI」と行った応用的な内容のご紹介をします。
この記事で、実際にAIを使ったシステムの作り方を学んでいきましょう!
また、次の記事ではそもそも人工知能(AI)とは何なのか、その意味を種類やできることも交え詳しく解説しているので良ければ参考にしてください。
- APIを活用すれば手軽に対話AIが開発できる
- 対話AIを開発するならドコモが提供するAPIがおすすめ
- 本格的な対話AIの開発にはデータ収集やモデル学習が必要
AIの作り方3ステップを理解!
まずはAI、特にDeep Learningなどの機械学習を組み込んだシステムの作り方を3ステップに分けて解説します!
機械学習と言っても色々ありますが、ここでは「教師あり学習」と呼ばれるものについて考えていきます。
さて、AIを使ったシステムを作成する流れを大きく分けると以下の3ステップです。
- データを集める
- モデルを学習させる
- システムに組み込む
この3ステップを詳しく見ていきましょう!
①データを集める
データ解析などでもそうですが、「データを集める」ステップが一番時間がかかります。機械学習を使って、例えば対話システムを作ると考えましょう。
AIさんに「元気ですか?」に対する返答を覚えてもらいたい時、
- Aさん「元気ですか?」→Bさん「元気だよ!」
- Aさん「元気ですか?」→Bさん「まあまあかな」
- Aさん「元気ですか?」→Bさん「寝不足なんだよね」
このような会話のデータを膨大な数集めます。
このデータを集める方法としては
- 無償・有償で公開されているデータセット使う
- TwitterなどのSNSから自分で集める
- その他インターネット上にあるデータを自分で集める
などの方法がありそうです。
インターネット上にあるデータは、多くの場合何かしらかの形で「コンピュータに分かりやすい形」に構造化されています。例えばHTMLなどがそれですね。
それを機械学習で使いやすいように前処理する必要があります。例えばHTMLタグを抜いたり、必要ならば絵文字を削除したりが必要ですね。
では別の例でも考えてみましょう。例えば「写真に映っているのが犬なのか猫なのかを識別するシステム」を作りたいとしましょう。
その時には「犬または猫が映った画像」と「その画像に映っているのが犬なのか猫なのかが分かる情報(=ラベル)」がセットになったデータを大量に集めなければなりません。
このような作業をまとめて「データを集める」ステップとここでは呼ぶことにします。
②モデルを学習させる
データを集めたら、実際の機械学習モデル(アルゴリズム)を学習させます。
イヌとネコを分類する問題を例にして考えてみましょう。
- 「識別したい画像」を機械学習モデルに入力する
- 機械学習モデルに「予測ラベル(ここではイヌかネコか)」を出力させる
- 教師データを参考に「画像の本当のラベルと比較する」
- 「本当のラベルを出力できるように機械学習モデルを修正する」
これを繰り返すことでイヌかネコかを識別するモデルを学習します。
例えば正解ラベルがイヌかネコかの2つしか無いのなら、イヌを1、ネコを0にしてあげればコンピュータ上でラベルを簡単に扱えますね。
さて、もうちょっと詳しく学習の仕組みを見ていきましょう。
中学校でやったような、y=f(ax+b)という関数があります。ここでt=ax+bとおけばy=f(t)ですね。fはよくわからない関数ですが、数字を与えられると必ず0~1の範囲で答えを返します。
引用元: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を探すことでもモデルを調整することはできますが、実際の機械学習モデルの学習フェーズでは、このパラメータの修正も自動で行ってくれるアルゴリズムを使います。
なお、IT企業への転職や副業での収入獲得を見据え、独学でAIスキルを習得できるか不安な人は「侍エンジニア」をお試しください。
侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。
「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や副業収入の獲得が実現できますよ。
③システムに組み込む
さて、機械学習モデルの学習が終わっても、システム全体としてはまだ完成ではないですね。
例えばUI(ユーザーインターフェース)の実装が必要になります。
SNS上で動く対話システムを作るのであれば、SNSから対話システム宛てに投げられた「問いかけ」を受け取る機能と、SNS上に「返答」を返す機能が必要です。
Webアプリで画像分類を行うなら、ユーザーが画像をシステムにアップロードする機能や、分類結果をWebブラウザで表示する機能を追加しないといけません。また、必要であればデータベースなどとも連携する必要があります。
これらを作ることで、ようやくAIを使ったシステムが完成します。
なお、プログラミングを学びたい気持ちはあるものの、どの言語が自分にあうのか、どう学習を進めればいいのかなどがあいまいな人は「プログラミング学習プラン診断」をお試しください。
かかる時間は1分ほど。4つの質問に答えるだけで、あなたにあう言語や学習プランを診断してもらえます。
効率よくプログラミングを学習したい人は、ぜひ一度お試しください。
\ 4つの質問に答えるだけ /
対話AIを作ってみよう!
手軽に対話システムを実装するには、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を使ってみたいところですね。
なお、IT企業への転職や副業での収入獲得を見据え、独学でAIスキルを習得できるか不安な人は「侍エンジニア」をお試しください。
侍エンジニアでは、現役エンジニアと学習コーチの2名体制で学習をサポートしてもらえます。
「受講生の学習完了率98%」「累計受講者数4万5,000名以上」という実績からも、侍エンジニアなら未経験からでも挫折なく転職や副業収入の獲得が実現できますよ。
AI勉強を始めよう!
前の章では、対話AIシステムをdocomo apiやRECRUIT apiを使って実装する方法を紹介しました。
自分で一から作ってみたい。
と思ったら、深層学習を始めとしたAI分野の勉強を始めましょう!
AI分野の勉強コンテンツはたくさんありますが、大きく分けて4つの方法を紹介します!
- 参考書で独習する
- Webコンテンツで独習する
- 勉強会で学ぶ
- オンラインスクールで勉強する
現状で手軽に勉強を始めるなら、この4つが選択肢になります。
これ以外にも、専門の大学に行くという最も手堅い方法もあります。ライフスタイルに合うか考えて選んでみてください。
さて、上の4つについては下の記事で解説していますので、是非参考にしてください。
挫折なくAIプログラミングの習得を目指すなら
先ほどAIの勉強方法を解説しましたが、なかには
独学で習得できるかな…
途中で挫折したらどうしよう…
と不安な人もいますよね。
実のところ、AI開発といったプログラミング学習で挫折する独学者は多くいます。事実、弊社の調査では
- 不明点を聞ける環境になかった
- エラーが解決できなかった
- モチベーションが続かなかった
などの理由から、87.5%が「プログラミング学習で挫折や行き詰まりを感じた」と回答しています。
また、こうした背景もあってか、弊社がプログラミングに興味がある人100名へ実施した別の調査では
- 確実にスキルを身につけられると思ったから
- 独学では不安がある
- 効率よく学べそう
などの理由から、61%が「プログラミングの勉強を始めるならスクールを選ぶ」と回答しています。
加えて、プログラミングスクールの卒業生に「独学ではなくスクールを活用した理由」を聞いたところ「できるだけ短い期間でITエンジニアへの転職や副業に必要なスキルを身につけたかった」という回答も多く寄せられました。
上記から、1人でプログラミングスキルを習得できるか不安な人や短期間でスキルを習得したい人ほど確実性を求め、現役エンジニアといったプロの講師に質問できるプログラミングスクールを利用する傾向にあるのがわかります。
いざ独学でプログラミングを学び始めても、勉強の最中に挫折しまっては学習にかけた時間を悔やむだけでなく「プログラミングスキルを身につけるのって思っていたよりも難しいんだな…」とAIスキルの習得自体を諦めかねません。
仮にわからないことを飛ばしながら勉強を進めたとしても、AIエンジニアへの転職や副業での収入獲得を実現できる実践的なスキルが身につかなければ、結局後悔することになります。
そこで、おすすめしたいのが「SAMURAI ENGINEER(侍エンジニア)」です。
料金 | 月分割4.098円~ |
実績 | ・累計指導実績4万5,000名以上 ・受講生の学習完了率98% ・受講生の転職成功率99% |
侍エンジニアをおすすめする最大の理由は「挫折しづらい学習環境」にあります。
先ほど述べたとおり、独学者の多くは自力で不明点やエラーを解決できないためにプログラミング学習を挫折しています。そのため、未経験者が現役エンジニアのようなプロに質問や相談できない状況で、プログラミングスキルを習得するのは非常に難易度が高いといえます。
しかし、侍エンジニアでは
- 現役エンジニア講師によるマンツーマンレッスン
- 現役エンジニアに質問できるオンラインでのQ&Aサービス
- 不安や悩み・勉強の進み具合を相談できる学習コーチ
といったサポート体制を整えているため、学習中に出てきたわからないことや不明点をいつでも相談可能です。「受講生の学習完了率98%」「転職成功率99%」という実績からも、侍エンジニアなら挫折しづらい環境でプログラミング学習を進められるといえます。
また、侍エンジニアではカウンセリングにて受講生一人ひとりの目的をヒアリングしたうえでカリキュラムを作成するため、限られた受講期間でもAIエンジニアへの転職や副業での収入獲得に必要なスキルだけを効率的に習得可能です。
最短距離で目的を実現できるようカリキュラムが組まれているため、勉強する順番や内容を誤り非効率に時間や手間を費やす心配もありません。
なお、AIエンジニアやデータサイエンティストへの転職を見据えて学習したい人は受講料の最大70%が給付される「データサイエンスコース」や「AIアプリコース」がおすすめです。金銭面での支援を受けつつ、データサイエンスやAIプログラミングの習得から転職活動・就業後のフォローアップ(※1)までを一貫してサポートしてもらえます。
学習と金銭面をどちらもサポートしてくれる侍エンジニアなら、未経験からでも安心してAIプログラミングを習得できますよ。
公式サイトで詳細を見るまとめ
この記事ではAIシステムの作り方、特に機械学習の「教師あり学習」に注目して解説しました。
また、より機械学習を手軽に使うために、いろんな企業が公開している学習済みの機械学習システムが使えるAPIについても解説しました。
まとめると、AIを使うシステムを作るには以下の2つの選択肢があります。
- 大手IT企業が公開してくれているAPIを使って手軽に作る
- 自分でAIを勉強してデータ集めから頑張って作る
また、対話システム、画像認識システム、音声認識システムなど、様々なAI技術が手軽に試せる&実装できるようになってきていますので、ドンドン試して面白いAIを活用したシステムを作ってみてください。
本記事の解説内容に関する補足事項
本記事はプログラミングやWebデザインなど、100種類以上の教材を制作・提供する「侍テラコヤ」、4万5,000名以上の累計指導実績を持つプログラミングスクール「侍エンジニア」を運営する株式会社SAMURAIが制作しています。
また、当メディア「侍エンジニアブログ」を運営する株式会社SAMURAIは「DX認定取得事業者」に、提供コースは「教育訓練給付制度の指定講座」に選定されており、プログラミングを中心としたITに関する正確な情報提供に努めております。
記事制作の詳しい流れは「SAMURAI ENGINEER Blogのコンテンツ制作フロー」をご確認ください。
この記事の監修者
株式会社SAMURAI
独学でプログラミング学習を始めるも挫折。プログラミングスクール「SAMURAI ENGINEER」を受講し、Web制作を学ぶ。副業でWeb制作を行いつつ、「初心者がプログラミングで挫折しないためのコンテンツ制作」をモットーにWebライターとして侍エンジニアブログ編集部に従事。