テクノロジと自動化への飽くなき追求
歴史を振り返ってみると、私たちは肉体労働や人的ミスを減らしながら問題を解決することを渇望してきた。私たちは道具を開発して作業を自動化することで常にエネルギーの保存に努めてきた。私たちはイノベーションを求めて独創的な問題解決や独創的な文学、音楽、芸術作品を作り出すというすばらしい知性を有していると説く人もいるが、本書を執筆したのは私たちという存在の哲学的問題を議論するためではない。本書は現実の問題に実践的に対処するために利用できる人工知能的なアプローチのオーバービューである。
私たちが難しい問題を解くのは、暮らしをもっとよいもの(もっと楽で、安全で、健康的で、充実した、楽しいもの)にするためである。歴史を彩り、この瞬間も世界中で起きている進歩はすべて、人工知能(AI)を含め、個人、地域社会、国家のニーズに応えるものだ。
過去の重要な出来事を理解せずして、未来を形作ることはできない。多くの革命的な出来事では、人間のイノベーションが私たちの生活様式を変化させ、人々の交流の仕方やそれについての考え方を方向付けた。私たちはイノベーションを繰り返し、道具を改良し続ける。それにより、未来の可能性が開かれる(図0-1)。
歴史と哲学をざっとまとめてみたが、これはひとえに、テクノロジとAIを基本的に理解してもらい、プロジェクトを始めるときに責任ある意思決定について考えてもらうためだ。
図0-1の年表を見ると、近代になるほど画期的出来事の間隔が狭まっていることがわかる。この30年間で最も注目すべき進歩は、マイクロチップの改良、パーソナルコンピュータの普及、ネットワークデバイスの急増、そして産業のデジタル化による物理的境界線の崩壊と世界のつながりである。AIは追求することが可能かつ妥当な領域となったが、その背景には次のような理由もある。
- インターネットによって世界が結ばれた結果、ほぼどのようなことについてもデータを大量に集めることが可能になった。
- コンピュータハードウェアの進歩により、これまでに蓄積してきた膨大な量のデータを使って既知のアルゴリズムを計算する手段が提供されている。その過程で新しいアルゴリズムも発見されている。
- より適切な決定を行い、より困難な問題を解決し、より適切な解を提供するためにデータとアルゴリズムを活用することの必要性を産業界が理解している。人類が誕生したときから暮らしを最適化するために行ってきたことと同じである。
私たちは技術の進歩を線形的なものとして捉えがちだが、歴史を調べてみると、進歩はむしろ幾何級数的であることがわかる(図0-2)。技術の進歩は年を追うごとに加速していく。新しいツールや手法を学ぶ必要があるが、すべての根底にあるのは問題解決のファンダメンタルズである。
本書には、難しい問題を解くのに役立つ基礎レベルの概念が含まれているが、少し複雑な概念をやさしく学べるようにすることも目指している。
自動化の捉え方は人それぞれである。技術者にとっての自動化は、ソフトウェアの開発・デプロイ・配付をシームレスでエラーが起きにくいものにするスクリプトの記述を意味する。エンジニアにとっては、製造ラインを合理化してスループットを向上させたり、欠陥を減らしたりすることを意味するかもしれない。農業従事者にとっては、自動トラクターや灌漑システムなど、収穫高を最適化するツールの導入を意味するかもしれない。自動化とは、生産性を向上させるために、あるいは手作業で行うときよりも高い価値が得られるようにするために、人的エネルギーの必要性を減らすあらゆるソリューションのことである(図0-3)。
自動化に踏み切らないとしたら、それはなぜだろうか。最大の理由の1つは、単に人間のほうが作業をうまくこなせることである。その作業がさまざまな見地からの洞察を必要とするものであったり、抽象的かつ創造的に考えることが求められたり、社会的交流や人間の本質を理解していることが重要だったりする状況では、人間のほうが失敗する可能性が低く、より正確に作業を行うことができる。
看護師は仕事を行うだけではなく、患者と交流し、患者の世話もする。看護を通じた交流は回復過程の因子の1つであることが調査で明らかになっている。教師は知識を授けるだけではなく、生徒の能力、性格、興味に基づいて生徒を指導する(生徒に知識を与え、相談相手となる)ための独創的な方法を模索する。とはいえ、適材適所というように、テクノロジを使って自動化するのに適しているものと、人が行うほうが適しているものがある。現在のイノベーションからするに、テクノロジによる自動化はどのような業種とも相性がよいだろう。
倫理、法的な問題、責任
なぜ技術書に倫理と責任の節があるのか不思議に思っているかもしれない。テクノロジと生活様式が複雑に絡み合う世界に進むに従い、テクノロジを作り出す人々は、自分たちが思っている以上の力を持つようになる。小さな貢献のつもりが、大きな波及効果を生むことがある。私たちの意図が善意によるものであること、そして私たちの作業から作り出されるものが無害であることが重要となる(図0-4)。
意図と影響:ビジョンとゴールを理解する
何かを開発するときには──物理的な製品でも、サービスでも、ソフトウェアでもいい──その背景にある意図が常に問われる。あなたが開発しているソフトウェアは世界によい影響を与えるものだろうか。それとも、悪意を持つものだろうか。あなたが開発しているものの影響を広い視野で捉えてみたことはあるだろうか。企業は利益と影響力を拡大する方法を常に模索している。
それは企業の成長にとって肝心なことである。ライバル企業に打ち勝ち、より多くの顧客を獲得し、さらに影響力を増すための最も効果的な方法を突き止めるために、企業は戦略を立てる。とはいえ、その意図が純然たるもので、企業の存続だけではなく、顧客や社会全般の利益を追求するものかどうかを内省しなければならない。数多くの名だたる科学者、工学者、技術者からAIの悪用を阻止するための規制の必要性を指摘する声が上がっている。
私たちにも、個人として正しいことを行い、核となるしっかりとした価値観を確立する倫理的義務がある。あなたの信条に反することを求められたときは、それらの信条を表明することが重要である。
目的外使用:悪意のある使い方を防ぐ
目的外の使い方を明らかにし、防ぐことが重要である。そんなことはわかっているし、簡単なことだと思っているかもしれないが、あなたが作っているものを人々がどのように使うのかを理解するのはそう簡単ではない。あなたや組織の価値観と一致するかどうかを予測するとなれば、なおさらだ。
1915年にPeter Jensenが発明した拡声器はその例である。この拡声器は、当初はMagnavoxと呼ばれ、最初はサンフランシスコで大勢の観衆に向けてオペラ音楽を演奏するために使われた。この使い方はまったくの善意に基づいている。しかし、ドイツのナチス政権には別の思惑があった。彼らは公共の場所に拡声器を配置して、ヒトラーの演説や声明が誰にでも聞こえるようにした。延々と流れてくる説法から逃れられなかった人々はヒトラーの思想に感化されやすくなり、これ以降、ナチス政権はドイツで過半数の支持を獲得するようになった。Jensenはまさか自分の発明品がこのような目的に使われるとは想像していなかったが、彼にできることはほとんどなかった。
時代は変わり、私たちは自分が作ったもの(特にソフトウェア)に対してより大きな権利を持つようになった。自分が作ったものがどのように使われるのかを想像するのはやはり難しいが、その結果がよいにしろ悪いにしろ、あなたが意図していなかった使い方を誰かが見つけることはほぼ間違いない。このことを踏まえて、テクノロジ業界のプロフェッショナルである私たちや、私たちとともに働く組織は、悪意のある使い方をできるだけ抑制する方法を考えなければならない。
意図しない先入観:誰もが使えるソリューションを作る
AIシステムを構築するときには、コンテキストと問題領域に関する知識を用いる。また、データからパターンを見つけ出し、それらのパターンに従って処理を行うアルゴリズムも用いる。至るところに先入観が存在することは否定できない。
先入観は人または人々の集団に対する偏見であり、性別、人種、信仰などを含むが、それだけに限られない。こうした先入観の多くは、社会的交流における創発的行動、歴史的な出来事、世界各地での文化的・政治的見解に起因する。これらの先入観は私たちが集めるデータに影響を与える。AIアルゴリズムはこのデータを扱うため、機械がこれらの先入観を「学習する」という問題がつきまとう。技術的な観点からシステムを完璧に設計することは可能だが、これらのシステムを操作するのは結局のところ人間であり、先入観や偏見をできるだけ排除するのは私たちの責任である。
私たちが使うアルゴリズムの良し悪しは、アルゴリズムに与えるデータによって決まる。データとそのデータを使うコンテキストを理解することが先入観と戦うための第一歩となる。よりよいソリューションを構築する上で、この知識が助けになるだろう。なぜなら、問題空間への理解を深めることになるからだ。先入観ができるだけ少ない公平なデータを提供することがよりよいソリューションにつながるはずだ。
法律、プライバシー、同意:基本的価値の重要性を知る
私たちが行うことの法律的な側面は非常に重要である。社会全体の利益のために私たちができることとできないことを規定するのが法律である。多くの法律が書かれたのは、コンピュータやインターネットが現在ほど人々の生活において重要ではなかった時代である。このため、テクノロジをどのように開発するのか、そのテクノロジを使って何を実行することが許されるのかについては、多くのグレーゾーンがある。とはいえ、急速な技術革新に対応するために法律も少しずつ変化している。
たとえば、私たちはコンピュータや携帯電話などのデバイスを操作することでほぼ四六時中プライバシーを危険にさらしている。私たちは自分に関する膨大な量の情報を送信しており、その中にはかなり個人的な情報もある。そのデータはどのように処理され、格納されるのだろうか。ソリューションを構築するときには、このような点も考慮に入れるべきである。
自分に関するデータのうち取得、処理、格納の対象になるのはどれか、そのデータがどのように使われるか、そのデータにアクセスする可能性があるのは誰かについて人々に選択肢を与えるべきである。筆者の経験では、人々が一般に受け入れるソリューションは、自分たちが使っている製品を改善し、生活の価値を向上させるために自分たちのデータを使うソリューションである。最も重要なのは、人々がより寛容であるのは、人々が選択肢を与えられ、その選択が尊重されるときであることだ。
シンギュラリティ:未知の探索
シンギュラリティ(singularity)とは、かなり汎用的な知能を持つAIを私たちが作り出すという概念のことである。このAIは自律的に能力を向上させ、やがて超知能になる段階まで知能を高めていく。懸念されているのは、このような規模になると人間には理解できないことである。
このため、私たちには理解することすらできないような理由で、私たちが知っている文明を変えてしまうかもしれない。この知能が人間を脅威と見なすのではないかと危惧する人もいれば、超知能にとって私たちは蟻のような存在かもしれないと言う人もいる。私たちは蟻を特に意識していないし、蟻の暮らしに関心を持ったりしないが、目障りだと思えば各々で対処するだろう。
これらの仮説が未来の正確な描写かどうかにかかわらず、私たちには責任があり、私たちが行う決定について考えなければならない。そうした決定が最終的には人、人々の集団、あるいは世界全体に影響をおよぼすことになるからだ。
本書について
本書は、人工知能アルゴリズムと問題解決におけるその用途を理解して実装する方法をわかりやすく説明するために書かれている。関連するたとえ、実例、イラストを交えた、テクノロジ業界の一般的な人にとってよりわかりやすい内容になっている。
本書の対象読者
本書は人工知能の裏側にある概念とアルゴリズムを知りたいと考えているソフトウェア開発者とソフトウェア業界のあらゆる人々を対象としており、詳細な理論と数学的な証明に基づく実例とイラストを使った説明で構成されている。
本書では、コンピュータプログラミングの基本概念(変数、データ型、配列、条件文、イテレータ、クラス、関数など。いずれかのプログラミング言語の経験があれば十分である)を理解している人と、数学の基本概念(データ変数、関数の表現、データと関数のグラフ化など)を理解している人を対象としている。
本書の構成:ロードマップ
本書は10の章で構成されている。各章はそれぞれ異なる人工知能アルゴリズムやアプローチに焦点を合わせている。本書では、最初に基本的なアルゴリズムと概念を取り上げ、それ以降の章で学ぶより高度なアルゴリズムの基礎固めをする。
-
第1章 人工知能を直観的に理解する
データを取り巻く基本的な概念、問題の種類、アルゴリズムとパラダイムの分類、そして人工知能アルゴリズムのユースケースを紹介する。 -
第2章 探索の基礎
基礎的な探索アルゴリズムのデータ構造とアプローチの基本的な考え方とこれらのアルゴリズムの用途を取り上げる。 -
第3章 知的探索
基礎的な探索アルゴリズムからさらに踏み込み、より最適な方法で解を求める探索アルゴリズムと、競争環境で解を求める探索アルゴリズムを紹介する。 -
第4章 進化的アルゴリズム
進化的アルゴリズムの一種である遺伝的アルゴリズムの仕組みを詳しく説明する。遺伝的アルゴリズムは、自然界の進化を模倣することにより、問題に対する解の生成と改善を繰り返す。 -
第5章 高度な進化的アプローチ
引き続き遺伝的アルゴリズムを見ていくが、より高度な概念に取り組む。これらの概念は、さまざまな種類の問題をより最適な方法で解くためにアルゴリズムの各ステップをどのように調整できるかに関連している。 -
第6章 群知能:蟻
群知能を詳しく取り上げ、蟻コロニー最適化アルゴリズムが蟻の生態の理論を使って難題をどのように解くのかを追っていく。 -
第7章 群知能:粒子
引き続き群知能アルゴリズムを見ていくが、最適化問題とは何かを詳しく見ていく。また、大きな探索空間で適切な解を求める粒子群最適化を使って最適化問題をどのように解くのかについても説明する。 -
第8章 機械学習
機械学習のワークフロー(データの前処理、モデル化、テスト)に取り組みながら、線形回帰を使って回帰問題を解き、決定木を使って分類問題を解く。 -
第9章 人工ニューラルネットワーク
人工ニューラルネットワークを使ってデータからパターンを見つけ出し、予測値を生成するための訓練の概念、論理的な手順、数学計算について説明しながら、機械学習ワークフローでの位置付けを明らかにする。 -
第10章 Q学習による強化学習
行動心理学に基づいて強化学習を理解し、Q学習アルゴリズムに取り組む。Q学習では、エージェントが環境内で行われる決定の良し悪しを学習する。
ぜひ各章を最初から順番に読んでほしい。章を追うごとに概念と知識が築き上げられていくようになっている。各章を読み終えたら、GitHubリポジトリのPythonコードを実際に試して、それぞれのアルゴリズムをどのように実装できるのかを実践的に理解するとよいだろう。