あたらしい人工知能の教科書

あたらしい人工知能の教科書 プロダクト/サービス開発に必要な基礎知識

あたらしい人工知能の教科書―プロダクト/サービス開発に必要な基礎知識
著者:多田 智史

内容紹介
人工知能を利用した開発に必要な基礎知識がわかる!【書籍概要】
さまざまな業界・業種で利用されてきている人工知能。その範囲は膨大で、
必要されている理論などの知識を取捨選択するだけでもたいへんです。
本書は人工知能関連のプロダクト・サービス開発を行っているエンジニアにとって、
今後の開発で必要になる知識を取捨選択し、理論と技術をわかりやすくまとめた書籍です。【対象読者】
人工知能を利用したプロダクトやサービス開発に携わるエンジニアの方
(プログラマー、データベースエンジニア、組み込みエンジニアなど)

【特徴】
機械学習・深層学習、Iotやビッグデータとの連係について、
理論の概念図や実際の事例などを用いて、わかりやすく解説しています。

【構成】
第1章では人工知能の過去と現在と未来について解説。
第2章から第14章への伏線となるよう、簡潔に解説しています。

第2章から第14章では、それぞれのトピックにおける理論と技術について、
丁寧に解説しています。

特に機械学習、深層学習を利用した開発に必要なものや、
分散コンピューティングなどハードウェアからの視点、
大規模データ・IoTとの連係までを網羅しています。

★読書前の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)

  • AUC(Area Under Cover)の値
    AUCはROC曲線の下の部分の面積値を意味する。この値が0.9以上の時は確度(accuracy)が高いとされている。複数のモデルがあったときは、この値同士を比較することが多い。
  • 左上から曲線までの距離
    これはAUCが高くなればなるほどROC曲線は左上に突き出すような形状になるので左上から曲線の距離が短くなればなるほど性能がよいのは自明である。この値が最も短いところでモデルが効率的なパラメーター(=曲線を作ったときの閾値に相当)であると推測することができる。
  • Youden Index
    AUCが低性能を示す0.5の斜めの線からの距離が最も離れているところでの真陽性率+偽陽性率をYouden Indexと呼び、この値をモデルでの最も成績がよいパラメーターと推測することができる。
学習した結果識別がどの程度うまくできているかということはROC曲線のほかにデータセットを分けて検証する方法があります。データセットは、学習時に使用する教師データや訓練データと呼ばれる正解セットと、評価検証時に使用するテストデータに分けることができます。このようにデータセットを分けておくと、過学習を避けることができます。同様のことはランダムフォレストにおいてデータをランダムに抽出して大量の決定木を生成することともつながります。検証方法には次のようなものがあります。(pp.183-184)

  • ホールドアウト検証(holdout method)
    データを2つに分け、それぞれっ訓練データとテストデータにしてしまい、テストデータは使用しない方法。テストデータを使用したときの精度を評価して性能を判断する。一般的には交差検証を含めない。
  • K分割交差検証(K-fold cross-validation)
    データをK個のグループに分割し、1つのグループを除いたデータを訓練データとして使用していない1つのグループでテストを行う。テストデータから得られた精度について、平均や標準偏差をとることで評価を行う。Kは5~10にすることが多い。
  • LOOCV(leave-one-out cross validation)
    K分割交差検証においてKがデータ数に等しい場合を指している。データ数が少ない場合などに行われる。

■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=”あたらしい人工知能の教科書 プロダクト/サービス開発に必要な基礎知識”]

(気に入ったら投票をお願いします!)

にほんブログ村 経営ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください