SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

翔泳社 新刊紹介(AD)

どうして機械が学習できる?入門書で挫折した人でも図解で機械学習を学べる『Python3年生』

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

 機械学習はその名のとおり「機械」が「学習」する仕組みです。しかし、なぜそんなことができるのでしょうか。その基本をしっかり理解し、仕組みや構造をイメージできるようになる学習書が『Python3年生 機械学習のしくみ』(翔泳社、森巧尚)。今回は本書から、「人工知能ってどうやって作るの?」と疑問を持つフタバちゃんに、ヤギ博士が機械学習の初歩から解説するパートを紹介します。人工知能や機械学習に興味があるけれど、入門書でもコードや数式が難しくて挫折してしまった人におすすめです。

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

本記事は『Python3年生 機械学習のしくみ 体験してわかる!会話でまなべる!』の「第1章 機械学習の準備」から一部を抜粋したものです。掲載にあたって編集しています。

扉絵

機械学習ってなんだろう

機械学習ってなんだろう1
機械学習ってなんだろう2
機械学習ってなんだろう3

機械学習とは

 人工知能とはどのようなものなのでしょうか。それを知るために、人工知能がどのように成長してきたかを見てみましょう。

 人工知能は、1950年頃から研究されていて、これまで3回のブームがありました。第1次人工知能ブームでは、「計算を使って迷路やパズルを解く人工知能」が作られました。ですが「知識」がないので、用意された計算はできるのですが、人間からの具体的な質問に答えるのは苦手でした。

 そのためしばらく人工知能は下火になりました。しかしその後、「専門家の知識をコンピュータに入れる」というアイデアが生まれ、エキスパートシステムが作られました。「専門家の知識やルール」を入れることで人間の具体的な質問に答えることができるようになったのです。

 これが、第2次人工知能ブームです。しかし、「専門家の知識やルール」は、あらかじめすべて人間(開発者)が調べて用意しないといけません。作るには大変な労力が必要だとわかったのです。

 そのためまた人工知能は下火になりました。しかしその後、インターネットが登場し、ネットを使ってデータをたくさん集められるという環境ができてきました。そこへ「たくさんのデータを使って、コンピュータ(機械)自身が自分で学習していく方法」が生まれました。

 これが「機械学習」です。データをどさっと渡して、「このデータのこの特徴に注目して学習しなさい」と指示するだけで、機械が自分で学習していく方法です。これにより、人工知能はまた盛り上がってきました。それが現在の第3次人工知能ブームの始まりです。

 この機械学習ではさらにすごい方法が生まれました。人間が「この特徴に注目して学習しなさい」と指示しなくても、機械が自分で見つけてしまうという「ディープラーニング(深層学習)」です。現在人工知能というと、多くの場合「ディープラーニング(深層学習)」のことを指します。

 ディープラーニングもこの機械学習の1つの方法です。データをたくさん渡すだけで、人間だったら思いつかないような特徴にも注目して学習できるようになり、精度の高い学習ができるようになりました。

 ディープラーニングは、人間の脳細胞をまねたニューラルネットワークを使って作られている非常に面白い技術です。ただ、それを解説するには大変なページ数が必要になるのでこの本では解説していません。その基本となるディープラーニング以外の機械学習について解説していきます。

ディープラーニング以外の機械学習

 機械学習でやっていることはひとことでいうと、「ものが持っている特徴の法則性を学習させること」です。データの中から「これは重要な特徴だ」という特徴を見つけて、それを学習させる「モデル」を用意します。モデルとは最初は空箱のようなものですが、これに特徴データを渡すことで、学習していくのです。こうして学習できたものを「学習済みモデル」といいます。

学習するとき

 学習済みモデルができれば、これを使って予測ができるようになります。学習済みモデルに、「この場合は、どうなりますか?」と、調べたいデータを入力すれば、「その場合は、こうなるでしょう」と予測結果を出力してくれるようになるのです。

予測するとき

 例えば、花の特徴を学習させて、「この花は何か」を予測することができますし、顔写真を学習させて、「この写真は誰か」を予測したり、過去の売り上げを学習させて、「今年の売り上げはいくらか」を予測するといったことができます。

予測結果

 ですから、機械学習の学習には、たくさんのデータが必要です。「少ないデータ」だと、偏った学習になることがありますし、「変なデータ」を使ったら、変な学習になってしまいます。つまり「データの量や質の良さ」は、学習の精度に影響します。機械学習では、「プログラムを書くこと」だけが重要なのではなく、「良いデータを、どうすれば用意できるかを考えること」も重要なのです。その意味でデータ収集やデータ分析は、機械学習ととても近いところにあります。

変な予測結果

データ分析と機械学習の違い

データ分析と機械学習の違い

 「データをたくさん渡して、コンピュータが何かをする」という点では、データ分析も機械学習も似ています。ですが、「目的」に違いがあります。これについて考えてみましょう。

 「データ分析」は、たくさんのデータを見て「これらのデータには、どんな特徴があって、どのような傾向があるだろう?」と、考えたり、説明するのが目的です。

 たくさんのデータは、そのままの状態では理解しにくいので、「全体を1つの値で表現すると、こうなります」と、ざっくりと説明する方法があります。それが、平均値や中央値などの代表値です。しかし代表値でまとめてしまうと、全体としての特徴が見えにくくなります。

 そこで「全体のばらつき具合を数値で表現すると、こうなります」とばらつき具合を説明したものが、分散や標準偏差です。また、「全体の中でこの値は、普通のことなのか、珍しいことなのか」を説明するときに、自然なばらつきを表す正規分布を利用します。正規分布の真ん中にあれば普通のこと、端っこにあれば珍しいことだと説明できます。

分布図

 これに対し「機械学習」は、たくさんのデータで学習をしたあと、「この新しいデータの場合は、こうだと予測できます」と、予測を行うのが目的です。

 例えば、「みかんとグレープフルーツの写真データ」を学習させてから、写真を見せると、「この写真はみかんです」とその写真に写っているものを予測します。「日本語の音声」を学習させてから、日本語で話しかけると、「『明日の天気は?』と質問しましたね」などと音声を予測します。

 「囲碁」を学習させたあと、囲碁の対戦を見せると、「次の手はこれです」と勝つ手を予測します。ロボットに「自転車に乗る方法」を学習させたあと、ロボットを自転車に乗せると、「すぐハンドルを切る。次はペダルを少し踏む」などと、リアルタイムに予測をし続けながら、ロボットをコントロールします。

 つまり、「これまでは、こうなっていました」と、過去を説明するものが、データ分析で、「新しいこのデータの場合は、こうだと予測できます」と、未来を予測するものが、機械学習なのです。

分けることは、わかること

分けることは、わかること1
分けることは、わかること2
分けることは、わかること3
分けることは、わかること4

機械学習のアルゴリズムでやっていることは「線を引くこと」

線を引くこと1
線を引くこと2
線を引くこと3

うまく分けるためには、意味のある特徴量が重要

 機械学習を行うには、まず現実世界にあるものの性質や状況をデータ化して、コンピュータに取り込むところから始めます。この「現実世界の性質や状況の測定できるデータ」のことを、「特徴量」といいます。

 例えば、「花のデータ」を取り込もうとしたとき、「花の大きさ」「花びらの色」「花びらの幅」「花びらの長さ」など、計測できる特徴をデータ化します。測定して取り込むことができる特徴の量なので「特徴量」といいます。

特徴量

 ただし、この特徴量には、予測にとって重要なものもあれば、予測にとって意味のないものもあります。意味のない特徴量をいくら学習しても、うまく学習できません。いかに意味のある特徴量を使うかが学習には重要になります。

 予測にとって意味のある特徴量、つまり「予測の根拠になるもの」を「説明変数」といいます。そして「予測される結果」のことを「目的変数」といいます。

 機械学習では、この説明変数と目的変数を使って、学習したり予測を行います(あまり区別せずに説明変数のことを特徴量という場合もあります)。

目的変数

 さて、学習をするとき、説明変数をいくつ使うかによって予測の詳しさが変わります。単純なデータなら、1つの説明変数だけで予測できそうですが、複雑なデータだと1つではうまく予測できない場合があります。そういうときは、説明変数を2つ3つと増やして予測精度を上げることを考えます。ただし、「説明変数を増やす」ということは、それだけ必要なデータが増えてくるので、バランスが大事です。

 説明変数をいくつ使うかを「次元」ともいいます。説明変数を1つ使うなら「1次元」、2つ使うなら「2次元」、3つ使うなら「3次元」です。

次元
Python3年生 機械学習のしくみ

Amazon SEshop その他


Python3年生 機械学習のしくみ 体験してわかる!会話でまなべる!

著者:森巧尚
発売日:2021年12月6日(月)
定価:2,420円(本体2,200円+税10%)

本書について

「機械学習ってどのようなことをするの?」と思っている方は多いと思います。本書はそうした方に向けて「機械学習」についていちからやさしく解説します。

 

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
翔泳社 新刊紹介連載記事一覧

もっと読む

この記事の著者

渡部 拓也(ワタナベ タクヤ)

 翔泳社マーケティング課。MarkeZine、CodeZine、EnterpriseZine、Biz/Zine、ほかにて翔泳社の本の紹介記事や著者インタビュー、たまにそれ以外も執筆しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

森 巧尚(モリ ヨシナオ)

http://www.ymori.comこの世にパソコンが誕生したばかりの時代から作り続けて30年。現在は主にFlashやiPhoneアプリなどのオリジナルゲーム制作、執筆活動、関西学院大学非常勤講師、セミナー講師などを行っています。著書: 『やさしくはじめるiPhoneアプリ開発の学校』(マイナビ) ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15250 2021/12/13 07:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング