あたらしい人工知能の教科書―プロダクト/サービス開発に必要な基礎知識
著者:多田 智史
内容紹介 人工知能を利用した開発に必要な基礎知識がわかる!【書籍概要】 さまざまな業界・業種で利用されてきている人工知能。その範囲は膨大で、 必要されている理論などの知識を取捨選択するだけでもたいへんです。 本書は人工知能関連のプロダクト・サービス開発を行っているエンジニアにとって、 今後の開発で必要になる知識を取捨選択し、理論と技術をわかりやすくまとめた書籍です。【対象読者】 人工知能を利用したプロダクトやサービス開発に携わるエンジニアの方 (プログラマー、データベースエンジニア、組み込みエンジニアなど) 【特徴】 【構成】 第2章から第14章では、それぞれのトピックにおける理論と技術について、 特に機械学習、深層学習を利用した開発に必要なものや、 |
★読書前のaffirmation!
[きっかけ・経緯] 監修の石井先生の「ビッグデータ活用実務フォーラム」からのメールでのお知らせを見まして、購入しました。
[目的・質問] 人工知能の基礎知識の再確認
[分類] 007.1:情報理論
テーマや用語を基準にまとめられており、非常に読みやすいです。
■1-03 発達する人工知能
統計学的な解法を用いた課題の解決には、大きく分類と予測に分けることができます。機会学習はこれらの機能をプログラムにしたもので、与えられたデータを自動的に計算することで特徴量を導き出すことができます。得られた特徴量はデータサイエンティストが特徴量を構成する要素や寄与度を目視で確認するなどして自動処理に利用することができます。機械学習を利用したシステムには、代表的なものとしてレコメンドエンジンやログデータやオンラインデータを利用した異常検知システムがあります。(p.21) |
モデルの精度について、機械自身で決定係数などでチェックはできますが現状は目視なしでは難しいです。ここでは、それを行うのがデータサイエンティストと言っています。判定だけでなく精度向上に対しても、また何をモデル化するかというところまでもがデータサイエンティストの守備範囲でしょう。
今後は機械学習アルゴリズムの改良等による、多様な種類の情報を効率よく取り込みながらもクレンジングやスパース(疎)なデータへの対応といった、これまで人間が行わなければならないような部分の処理をするシステムの開発などが主要な技術的進歩になると思われます。(p.27) |
2000年前後よりチャットAIに関しては人工無能などのボットプログラムに人気がありました。(p.27) |
「人工無能」って恥ずかしながら初めて聞きました。Wikipediaによると、
人工無脳(じんこうむのう)は、英語圏ではchatterbot、もしくはchatbotと呼ばれる会話ボットあるいはおしゃべりボットといったようなコンピュータプログラムのことで、語としては「人工知能」ないし「人工頭脳」からの派生である。
人工知能の観点からは、通常の科学・技術・工学的なボトムアップなアプローチでは、ある種の目標であるチューリング・テストなどのいわゆる「人らしさ」に到達するまでの道のりが遠いので、トップダウン的に「人らしさ」のモデルを作りこむことで「人らしさ」を作り出そうとする立場。およびその立場で作られたシステム・モデル・ソフトウェアだと見ることもできる。
具体的には、1人以上の人間とテキストまたは音声で知的な会話をすることをシミュレートするコンピュータプログラムである。一見して知的に人間の入力を解釈して応答しているようにも見えるのだが、多くは単にキーワードを拾って、内部のデータベースとのマッチングによって、それらしい応答を返しているだけである。
だそうです。 しかし、これを発展させてコールセンターなどの問い合わせに対しての自動応答システムなどに活用されています。
IBMが開発を進めるWatsonは深層学習を利用したシステムが含まれています。コグニティブコンピューティングと呼び、他のシステムとは一線を画しています。コグニティブコンピューティングは自然言語を処理することによる対話と意思決定支援システムとしてのところに価値を置いています。(p.28) |
自律的な答えの発見を目指し、コンピュータがデータをたくさん処理し、計算することができるようになったとしても、問題の定式化は人間が行わなければなりませんし、問題の設計と解への道筋における検討やひらめきは最後まで人間の特権(あるいは苦悩)となります。今後、いろいろな機能を持つ小単位の人工知能プログラムを組み合わせ、相互に通信させることで、それらが連携することや、大きな課題解決を行うことができるようになるのも時間の問題かもしれません。
しかし機械が「意識」を芽生えさせることができたとしても、答えへの道筋を自ら導き出すことができるようになるかどうかは、現在のアプローチの延長線上にあるか、はたまたまったく異なったアプローチによって達成されるかどうかなど、さまざまな議論がされてはいますがまだわかっていません。(p.30) |
やはりここでも、2045年の「シンギュラリティ(技術的特異点)」についてはこれまでの延長線上では難しいという見解だと思われます。
■2-01~
「ルールベース」のiF-THENの考え方を発展させて、「知識ベース」、「エキスパートシステム」となっていきました。
また今まで説明ができなかった言葉をチェックしておきます。
アノテーション:あるデータに対して関連する情報を付与すること キュレーション:データを収集し、アノテーションの情報などをもとに精査し、統合し整理してまとめること |
エキスパートシステムは推論エンジンを利用して判定結果を返します。推論エンジンとはルールを使って推論をするプログラムのことを指します。人間が取り扱うルールは、言葉で表現されることで理解できますが、コンピュータが解釈をして処理をするためには、表現をそれに適したものに変える必要があります。そのような表現に関する学問領域は記号論理学と呼ばれています。(p.42) |
拡張された推論エンジンの例として、下記のような構造が示されています。(p.42)
・述語論理(predicate logic)
┣様相論理(modal logic)
┃┗認識論理(epistemic logic)
┗時制論理(tense logic)
・多値論理(multi-valued logic)
┗ファジィ論理(fuzzy logic)
人工知能とは、「推論エンジンによって実現していることをどれだけ人間の手助けなしに実行可能であるか」という側面があると言えます。問題の定期化を行う際に、これらの推論エンジンで行っていることの一部を人間があらかじめ行っておくことで、プログラムで処理するべき問題をできるだけ限定しています。1970年代においては、「これらの推論エンジンを駆使してもあらゆる問題に対応する人工知能を作り出すことに限界がある」と言われてきました。これらの限界については記号創発問題などと呼ばれています。(p.46) |
記号創発についてはこちらに分かりやすく書かれていました。また谷口先生が書かれた著作も分かりやすそうなので、合わせて読んでみたいと思っています。
[amazonjs asin=”4062585804″ locale=”JP” title=”記号創発ロボティクス 知能のメカニズム入門 (講談社選書メチエ)”]
■3-01 人工生命シミュレーション
ライフゲーム等のマス(セル)を使って時間経過と状態変化を表現し、空間的な構造変化の時間発展を研究する理論領域をセルオートマトンと言います。オートマトンは日本語でそのまま記述すると自動人形となりますが、簡単には何らかの刺激を受けて反応を示すからくり人形ということになります。(p.61) |
■3-03 マルコフモデル
状態マシンに入力があったときに次のステップへ進み状態マシンの状態がルールに従って変化します。ここで確率論の観点から確率過程を考えたとき、この状態変化の様式をマルコフ過程と呼ばれるもののうちの1つに当たります。マルコフ過程とはマルコフ性を持つ確率過程を言い、将来状態の条件付き確率分布が現在の状態にのみ依存して、それ以前の過去の状態には関係しないという特性があります。(p.64) |
確率過程とは、時間の経過による変化を扱ってきたところに「状態の変化が確率的に起こる」という表現を加えたものと考えることができます。セルオートマトンにおいて、状態は有限個で離散的なもの、つまり自然数などの飛び飛びの値で離散状態になっています。そして時間の経過に関しては、特にセルオートマトンのようなものでは離散時間で表現しています。このような確率過程は、マルコフ過程のなかでもマルコフ連鎖と呼ばれるものに分類されています。(p.64) |
■3-04 ステート駆動エージェント
ゲーム中に存在する個別のステートマシンやステートマシンを統括するようなシステムをエージェントと呼びます。エージェントは他のエージェントとやり取りをすることや、影響を与え合うことで利用者であるゲームのプレーヤーに情報や刺激を与えます。エージェントとは、ここでは特にソフトウェアエージェントを指しています。ソフトウェアエージェントには下記のような特性があり、これらの特性を永続性、自律性、社会性、反応性と呼びます。(p.69)
|
■4-01 線形問題と非線形問題
線形関数を用いて点の分布を表現できている状態において、それらの制約や条件を用いて解決可能な問題を、線形計画問題と言います。線形計画問題の一つに整数に限定した整数計画問題があり、ナップサック問題と呼ばれる問題がこれに当てはまります。 |
wikipediaには次のように書かれています。
ナップサック問題(ナップサックもんだい、Knapsack problem)は、計算複雑性理論における計算の難しさの議論の対象となる問題の一つで、「容量 C のナップサックが一つと、n 種類の品物(各々、価値 pi, 容積 ci)が与えられたとき、ナップサックの容量 C を超えない範囲でいくつかの品物をナップサックに詰め、ナップサックに入れた品物の価値の和を最大化するにはどの品物を選べばよいか」という整数計画問題である。同じ種類の品物を1つまでしか入れられない場合(xi ∈ {0, 1})や、同じ品物をいくつでも入れてよい場合(xi ∈ 0以上の整数)など、いくつかのバリエーションが存在する。
■5-03 遺伝的アルゴリズム
生物が生存していくなかで、交叉、突然変異、淘汰しながら環境に適合していくよう進化をしているという説に基づいた最適化の手法を遺伝的アルゴリズムと呼んでいます。時間軸上で何度も計算を繰り返し、ステップ数を重ねることで最終的に求めたい結果へ収束させていきます。そのプロセスのなかで交叉や突然変異といった進化論的なアイデアを取り入れたこにょうな計算手法を進化計算と呼ぶことがあります。進化計算には次のような特徴があります。(p.114)
|
■5-04 ニューラルネットワーク
ニューラルネットワークの特性(p.125)
|
形式化ニューロンにおいて受け取った入力値を出力するときに閾値により出力値を変化させる非線形の関数のことを活性化関数と呼んでいます。活計化関数にはMcCulloch-Pittsモデルではへヴィサイドの階段関数を使用していましたが、ほかにステップ関数やシグモイド関数も使われます。(p.125) |
単純パーセプトロンでは、次のような定理が知られています。
しかし、データが線形分離不可能であればパーセプトロン学習は収束しない、線形分離可能であっても収束までに非常に時間がかかる、という限界があることも知られています。(p.127) |
パーセプトロンは入力から出力の流れる方向があり、ノード1つに接続する辺は一方向でした。これに対してボルツマンマシンは1986年にヒルトンらが提案したニューラルネットワークの構造で、ノードがそれぞれ双方向に結びついています。つまり隣のノードが受けた自分の出力した値を、再び自分が受け取るフィードバック機構が働いていることになります。(p.127) |
説明変数は関数になってもかまいません。このときの関数を、基底関数と呼んでいます。正規分布以外の分布も取り扱う一般化線形モデルや混合正規分布などの混合モデルでは、基底関数や基底関数の線形結合によってモデルを表現します。(p.137) |
基底関数は、使用したいと考える確率分布モデルによって連続確率分布と離散確率分布に分けられます。(p.137)
●モデルとなる主な関数
|
ディリクレ分布は多変量ベータ分布とも呼ばれており、ベータ分布の多変量への拡張とされています。連続関数でですが、2次平面上では連続関数として表現できません。ある事象が出現する回数を確率変数としている分布が多項分布であるのに対して、確率を確率変数とする分布で、自然言語処理などで用いられることも多いです。(p.141) |
■7-02 教師あり学習
ROC曲線の評価法としては主なものとして3つあります。(pp.182-183)
|
学習した結果識別がどの程度うまくできているかということはROC曲線のほかにデータセットを分けて検証する方法があります。データセットは、学習時に使用する教師データや訓練データと呼ばれる正解セットと、評価検証時に使用するテストデータに分けることができます。このようにデータセットを分けておくと、過学習を避けることができます。同様のことはランダムフォレストにおいてデータをランダムに抽出して大量の決定木を生成することともつながります。検証方法には次のようなものがあります。(pp.183-184)
|
■8-01 アンサンブル学習
単純な学習器では性能が出にくい場合は、アンサンブル学習が有効です。アンサンブル学習を利用すれば、個々に学習した複数の学習器を組み合わせて、これらの力を合わせることで、汎化性能を上げることができます。(p.186) |
アンサンブル学習の内の1つが、バギングと呼ばれるもです。バギングは、ブートストラップ法を用い、学習データからm回の復元抽出をBサイクル繰り返すことにより、小分けにしたm個のデータを含むB群の学習データが生成できます。(pp.186-187) |
決定木を大量に生成しそれらのよいところを選択することで、性能のよい識別を行うランダムフォレストにおいても、バギングと同様にランダムにデータを抽出して小さなデータセットで学習を行います。バギングでは学習データの説明変数を全て用いる一方で、ランダムフォレストでは説明変数においてもランダムに抽出を行う点で異なっています。(p.187) |
複数の弱学習器を同時に生成しそれらを公平に利用しているバギングに対して、逐次的に弱学習器の選択を行う方法がブースティングです。期待した認識をさせたいデータセットとそうでないデータセットに対して、ブースティングを利用して逐次的に弱学習器を選択することで、認識漏れのない少ない強学習器を得ることができます。代表的なアルゴリズムとして、AdaBoostがあります。(p.188) |
以後、CHAPTER 9では「深層学習」、CHAPTER10 「画像・音声認識」、CHAPTER11「自然言語処理」とあります。
CHAPTER12では「データベース」、CHAPTER13では「分散こんぴゅ^ティング」と人工知能を支えるハード・ソフトウェアのお話し。
最終章のCHAPTER14では「大規模データ・IoTとのかかわり」ということでクラウドや人工知能が関わっていくビジネス領域などについても触れられています。
年末にご紹介した「人工知能が変える仕事の未来」ではビジネス領域なども含めて人工知能に関してマクロな観点で書かれていましたが、こちらはモデル作りのためのアルゴリズムなどミクロな観点で書かれており、(分かりやすく書かれていますが)専門的な内容だったように思います。
新年度の一発目としてはなかなか手ごたえのある1冊でした。
[amazonjs asin=”4798145602″ locale=”JP” title=”あたらしい人工知能の教科書 プロダクト/サービス開発に必要な基礎知識”]