人工知能を独学で学ぶ [あなたの興味のあるAIを見つけよう!]

最近よく耳にする「人工知能(AI)」、このAIの技術革新により世の中がすさまじい速さで変わろうとしています。私たちの暮らしだけでなく、産業界でもAIの導入の流れが止まりません。このAIの導入によって生活がより豊かで便利になることが期待される一方で、将来AIに職業が取って変わられてしまうことが危惧されるなど、数年後の世界はAIによりどのよう世界になっているのか非常に高い関心が寄せられております。

急速な勢いで進歩していくAIを生活やビジネスに取りこまれることで、従来のやり方が通用しなくなり革新や変化を求められるものや、逆に新たなビジネスチャンスを生み出すものもあります。しかし、それらの変化やチャンスを逃さないためには世の中に常にアンテナをはり、そして今のAIに何ができて何が出来ないのか、それをしっかりととらえることが大事です。
AIは魔法ではないし映画の世界のように人類を滅ぼそうとは思いません(少なくとも今の段階では)し、限界もあります。そこを見極めて適切にAIを使うことで新たなチャンスが生まれると私は信じています。

そこで私はAIを学ぶための手段の一つとして、 人工知能を独学で学ぶ ことに挑戦しました。

しかし、独学で学ぼうにもプログラミングが全くの初心者で、Excel VBAぐらいは使ったことがある、、という私にとっては、人工知能の勉強を始めようと思い立っても、何から手をつけていいのかわかりません。そこでこの記事では、実際に私が人工知能を独学で学ぶために、どのようなステップで勉強していったのかを紹介します。

はじめに

” 人工知能を独学で学ぶ “とあるように、私はAIやプログラミング等の知識は初心者です。なので、この記事は「知識ゼロの私がどのようにAIの知識を得ていったか」というプロセスを記録していくものです。それに加えて私が色々な文献から考え思ったことを記しております。

あなたのやりたいことは、どのAI?

「人工知能(AI)」とひとくくりにされていますが、AI(と思われているものも含めて)にも様々な種類があります。あなたが業務、または趣味で学習したいと思っているAIは何をするためのものでしょうか?

はじめにAIと呼ばれているものを、分野ごとの基本的な知識を紹介していきます。読み進めながら自分が行いたいことを一度確認し、そのキーワードでさらに検索してみてください。

写真に判別する、文字を認識する : 画像認識・自然言語処理

過去の連続した大量のデータから未来の異常(ズレ)を検知する : 機械学習

単純な繰り返し作業をPCにサポートしてほしい : RPA(ロボティック・プロセス・オートメーション)

自分で学習し進化していく人工の生命体をつくりたい : 人工生命

人工知能を独学で学ぶ

人工知能を独学で学ぶ

最近流行の人工知能(AI)ですが、AIが将棋や囲碁で勝ったとか、様々な企業がこのAIを導入して新サービスの提案を目指しております。私がこの人工知能に対して強い関心を抱いたのは、オックスフォード大学が発表した「人工知能の発展により50%の仕事がなくなる」といった論文です。

「将来自分の仕事が無くなるかも」という不安に襲われつつ目を通したら、人工知能により置き換えられる職業がある一方、人工知能を活用することにより人間がより創造的な仕事を行える可能性があることも学びました。

ポジティブな面、ネガティブな面のいずれにしろ、今後20~30年働く間にAI技術は今の仕事の在り方を大きく変えるだろうと思い、このAIを独学で学ぶ方法が無いかと探してみました。

物事を学ぶためには、まず近年のIT革命の「要素技術」とは何か、という点に着目して調べる必要があります。キーワードは「Deep Learning」です。

近年のIT革命は「Deep learning」が鍵

従来の人工知能(Deep Learning以前)

Deep Learningの話をする前に、従来の人工知能について説明します。人工知能の歴史は古く、人工知能の研究はインターネットの登場した1940年以降から行われておりました。従来の人工知能も、画像認識や音声認識などの処理は可能でした。しかし、それには人間による定義づけが必要でした。つまり、「ルール」や「特徴」を人間の手で言語化して入力する必要がありました。しかし、人間が物事を完全に定義するには限界があります。そのために従来のAIは予め設定された範囲を超える事態や例外的な事柄に対応することが苦手だと言われておりました。

例えば、以下に「ネコ」と「ヒョウ」の写真があります。「ネコ」と「ヒョウ」を正しく見分けることが出来るでしょうか。

 

殆どの人は直感的に、最初が「ネコ」で次が「ヒョウ」だと見分けることができます。それは、これらの写真を見た瞬間から、脳内の今までの記憶・経験の中から「ネコっぽい特徴」「ヒョウっぽい特徴」を思い出して、上の写真と比較・参照することで瞬時に判断を下します。これは、恐らく初めて見るであろう写真でも瞬時に判別することができます。この判断には厳密な言葉の定義が無くても、それこそ「何となくな特徴」で判断でき、これは言い換えると我々は「一般化された特徴量」を学習して会得しているのです。

それでは、従来の人工知能はどうでしょう?

従来の人工知能の画像認識では、まず始めに「ネコ」と「ヒョウ」の特徴を言語化して人間の手で定義してやる必要があります。例えば、

  • 「ネコ」:丸くてつぶらな瞳、全長1m以下、ペットとして飼われている
  • 「ヒョウ」:するどい牙を持つ、全長1m以上、野生動物

という定義があれば、上記の写真から判別することはできるかもしれません。

しかし、例えば以下の2枚の写真はどうでしょうか?

この写真も同様に最初が「ネコ」で次が「ヒョウ」です。しかし、「ヒョウ」の写真が赤ちゃんのものを用いており、「ネコ」で定義した[丸くてつぶらな瞳][全長1m以下]といった定義と重なってしまいます。そのため、初期の定義から判断することは難しくなりました。

人間は特定の定義がなくても今までの大量の経験から、非言語的に「ネコ」と「ヒョウ」を分類することができます。

従来の人工知能は、事前に人間が用意した訓練データ(「ネコっぽい特徴」「ヒョウっぽい特徴」を現すモデル)を学習し、そのデータをもとに分類・予測を行っていました。これを「機械学習」と言います。

しかし、あくまで人間により言語化された定義が必要であるため解析には限界があり、人間のように直感的に判断することは苦手とされていました。

これらの課題を解決したのがDeep Learning技術です。

Deep Learningの登場

Deep Learning技術は人間の脳内の神経を真似たシステムを用いて、大量のデータからAI自身がルールや問題の解を見つけるという技術です。

人間の赤ちゃんが「ネコ」「ヒョウ」の特徴を大量の情報から学んでそれぞれの「特徴」を学んでいくように、AI自身が大量のデータから「ネコっぽい特徴」「ヒョウっぽい特徴」を定義づけるのです。

有名なのは「Googleの猫」で、人工知能に大量の猫の画像を見せることで、人工知能が誰に教わるでもなく、自分で猫の特徴を学習して猫を認識するまでに至ったという記事です。

これらのディープラーニングの事例と可能性をわかりやすく示しているのが以下の本です。

このDeep Learningが今のAIブームの火付け役で、この技術があるために昨今のAI革命が起こりました。このきっかけとなった、Deep Learningを学ぶことで「今のAIに出来ること」「AIの成長の方向性」を把握できるのではないかと考えました。

Deep Learningと機械学習の違い?

ここでは今まで出てきた、Deep Learningと機械学習についてもう一度整理したいとおもいます。

  • Deep Learning: 大量のデータをInputしてAI自身が特徴量を学習する
  • 機械学習: 開発者が定めた「トレーニングルール」により特定のAIが特定のタスクを実行できるようにすること

以下のHPでは、「赤いリンゴ」と「青いリンゴ」を判別することを例に機械学習とディープラーニングの違いを説明しています。

ディープラーニングはたくさんのデータを見ることによって、どこに着目すればよいかを自分で学習し、人間からの指示を待たずに自動でどんどん賢くなっていく。

機械学習では何に着目するか、例えば「色」に着目するように指定しなければならない。

上の記事を見る限り、ディープラーニングには大量のデータが必要なことがわかりました。個人が大量のデータを有していたり、それらのデータを処理するためのスーパーコンピューターもありません。それに、「ディープラーニング」は「機械学習を実施するための1つの手法」であります。つまり、初心者が昨今で話題に乗っている人工知能を独学で学ぶには、「機械学習」を学ぶことこそが現実的かつ効率的な道であると考えました。

人工知能(機械学習)を学ぶための基礎言語「Python」

どんなに複雑で高度な処理を行うプログラムでも、それらは必ずある複数の「命令文」によって構成されております。それらの命令文を組み、実行するためには「プログラミング言語」をある程度理解する必要があります。

プログラミング言語は、「JavaScript, Visual Basic, C++」があります。プログラミング言語にはそれぞれ特徴が異なり、分野ごとに用いられているプログラミング言語は異なります。

人工知能(機械学習)に適したプログラミング言語が「Python」です。Pythonは「スクリプト言語」と呼ばれる種類のプログラミング言語です。

調べてみるとPythonの特徴として、以下のような特徴が挙げられております。

  • Pythonはほかの言語に比べて文法が簡単で覚えなければならないことが格段に少ない
  • 本格的なソフトウェアの作成に使える(GoogleやNASAの内部で利用されている)
  • 様々なサービスに利用されているために学習しやすく、また多種多様な「ライブラリ*」が用意されており実践で使いやすい

*プログラムで使える”既成部品”で、高度なプログラミングを0から作る必要なく、既成のライブラリを上手に活用することで少ない労力で高度なプログラミングが可能となる。

機械学習にも使われており、シンプルで現在も様々な分野で使われているばかりか、人工知能ブームによる将来性も期待されている、なんとも夢のようなプログラミング言語ではありませんか!

ということで、「Python」という入口を選択して人工知能に関する勉強方法を調べてみました。

その他の参考学習サイト

Python の学習におすすめのサイト・書籍を紹介

ここまで読んで頂いた方には、冒頭で「人工知能・AI」にどのようなことができるのかという大まかなイメージを持っていただき、それらを実際に自分で動かしたり中身を理解しようとしたときには「Python」というプログラミング言語を学ぶことがよさそうだということがおわかりいただけたかと思います(厳密には、この他にも統計学的な知識があることが望ましいですがここでは割愛します)。

さて、このPythonを学ぶには「楽しみながら手を動かす」ということが私には一番でした。そこで私は、「ゲームで遊びながら手を動かし」、つまずいたり疑問に思った箇所は「導入本で確認する」という2つの手法を組み合わせて学習しました。そのときに実際に使ったものを紹介します。

楽しみながら書いてみるー学習サイト・ゲーム

楽しみながら勉強するなら、ゲーム形式のコンテンツが打ってつけです。ここでは、Pythonを学習できるゲームプログラムを示しました。

日本語サイト・ゲーム

paiza

e-Learningの他にもゲームや転職について等様々な学習機能がある。課題クリアで貰えるポイントが転職時の評価に使えるらしいです。

paizaのゲームの中には、もし次の常駐先が女子エンジニアばかりだったらコードガールコレクション等があり、日本語で学びながら遊べます。

これらのゲーム・学習サイトの中でも特に初心者にお勧めしたいのが、CODECOMBATpaizaのe-Learningです。

paizaのe-learningは一講座当たり2~3分で、動画による講義と同じ画面にある入力画面でプログラミングの実践が出来ます。登録無料で受講できるために、自分の学習方法に適しているか試しやすいです。

初心者にお勧め RPG風に遊びながら学べる CODE COMBAT

CODE COMBATはRPG系であり、他の英語系ゲームと比較してBGMや、効果音SEも本格的で一番ゲームとしての完成度が高いです。

初心者にお勧めの理由として、以下の点が挙げられます。

  • 基本無料でプレイ可能
  • 初心者に優しいコードの入力ガイド
  • 初心者に優しいヒント

日本語でヒントがかかれているためわかりやすいです。ヒントが一部英語の部分もありますがイラストも示されているので、問題なく進めます。

最初のステージをクリアした後も、この丁寧なガイドが続くので初心者でも安心して上達していくことができます。

CODE COMBATの更に詳しい内容は以下の記事で紹介しております!

基礎の用語や関数の学習 -書籍・学習サイト

Paiza や CodeCombat で楽しみながら学習していても、「この “for”ていう構文はどういう意味だろう」、「この関数は何に使うの?」というようにつまずいてしまう場合がありました。そんなときに私が参照したのは『いちばんやさしいPythonスタートブック』です。

この書籍は複数の記事でお勧めされていた本で、プログラミング未経験の人の導入に向いていると評価されておりました。

確かに、いきなりPythonのプログラミングの組み方や計算方法に入るのでなく、Pythonのインストール方法から、快適な使用のための環境設定など、プログラミンソフトを触ったことのない本当の意味での初心者にも優しい構成となっております。

とは言え、本当に基礎的な部分から始まっているので人によっては内容が薄すぎるように感じられてしまいます。

プログラミングが初めてで、プログラミングの基礎的な考え方について具体例を交えながら学びたいという人にもお勧めです。

私も悩みましたが結局、多くの人の編集やチェックを経て完成した「書籍」を信頼して、上記の本を買いました。数千円の初期投資で信頼できる土台作りをしてから、各学習サイト等を比較して自分にあったものを選択していければいいかな、と思います。

Pythonの学習法についてもう少し詳しく見たい人は以下の記事もどうぞ。

最後に

今回私が学んだのは「現在のAI革命の背景には、Deep Learningがある」ということと、「Deep Learningの体系は機械学習に分類される」ということでした。

どうやら、近年の人工知能ブームはこのDeep Learningが急速に発展したものであり、その根本には機械学習という分野の知識を獲得することが必要だと考えました。

今後もこれらの機械学習を独学で習得するための記事の中から、私が実際に参照したり採用した方法についてお知らせします。

さらに プログラミング / 人工知能(AI) / 機械学習 について興味がある人は下のまとめページも読んでみてください!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。