Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

すべてのWeb開発者が機械学習を学ぶべき理由

私はまだ子どもはいませんが、将来子どもを持ったら、二つのことを学ばせたいと思っています。

  • 個人の資産管理(ファイナンス)
  • 機械学習

シンギュラリティ(技術的特異点)が近いと信じるかどうかは別として、現代の世界がデータによって動いているという事実は否定できません。データがどのように知識へと変換されるのかを理解することは、今の時代を生きるすべての人にとって重要であり、特に開発者にとっては不可欠です。

本記事は、フルスタックのRuby開発者に機械学習(ML)をわかりやすく伝えることを目指したシリーズの第一弾です。MLツールへの理解を深めることで、ステークホルダーのより良い意思決定を支援できるようになります。今後の記事では個別の手法や実践例を取り上げますが、まず本記事では全体像――いわば「あなたはここにいます」というピンを立てた地図――をお見せします。

ささやかな始まり

すべてのWeb開発者が機械学習を学ぶべき理由

人工知能(AI)と機械学習は決して新しい概念ではありません。1950年代には、アーサー・サミュエル(Arthur Samuel)がチェッカーをプレイできるコンピュータプログラムを開発しました。彼が使用したのは「アルファ・ベータ法(αβ枝刈り)」と呼ばれる一般的な探索アルゴリズムです。

1960年代には多層ニューラルネットワークや最近傍法(nearest neighbor algorithm)が登場しました。最近傍法は、倉庫内での最適な移動経路の算出などに活用されています。

では、これほど歴史のあるAIなのに、なぜAIスタートアップが今ほどトレンドになっているのでしょうか?私の考えでは、その理由は主に次の2つです。

  • コンピューティングパワーの向上(ムーアの法則参照)
  • インターネットに毎日追加される膨大なデータ量

日々生成されるデータ量に関する統計には、考えるたびに驚かされます。

  • 2018年の時点で、世界では1日に2.5クィンテリオンバイトものデータが生成されていました。このForbesの記事が公開された後も、この数字は間違いなく増え続けています。
  • 過去2年間だけで、世界に存在するデータの90%が生成されました。

つまり、(1)データの保存やアルゴリズムの実行に必要なハードウェアのコストは下がり続け、(2)MLモデルの訓練に使えるデータは爆発的なスピードで増加しているのです。

私たちは毎日、AIや機械学習の世界と関わり、その影響を受け、そしてそれに貢献しています。たとえば、以下のようなことはすべてアルゴリズムのおかげ(あるいはせい)と言えるでしょう。

  • あなたの与信枠(クレジット限度額)
  • 病気の診断支援
  • 場合によっては、採用の合否
  • 現在の交通状況を踏まえた最短ルートの案内
  • Alexaが「くしゃみをした」と伝えただけで意図を正確に理解すること
  • Spotifyがあなたの新しいお気に入りの曲を紹介してくれること

冒頭で架空の将来の子どもたちの話を持ち出した理由はこうです。デジタル上の生活が「現実」の生活にどう影響するのか、データプライバシーに関する判断が何を意味するのか、そしていつマシンを信頼し、いつ疑うべきかについて自分自身の意見を持てるようになってほしいのです。

この記事の残りの部分では、私が学んできた3種類の機械学習――教師あり学習、教師なし学習、強化学習――について概説します。それぞれのアプローチの特徴と、どんな問題の解決に特に適しているのかを見ていきましょう。

教師あり学習(Supervised Learning)

すべてのWeb開発者が機械学習を学ぶべき理由

教師あり学習とは、その名の通り人間に「監督」される学習です。:) 住宅ローンの審査可否を判断する教師あり学習システムを構築するとしましょう。どのような流れになるか見てみましょう。

  1. 銀行が、顧客の属性(年齢、年収など)と結果(返済完了、債務不履行など)を対応付けたデータセットを作成します。
  2. そのデータを使ってシステムを訓練します。
  3. システムは学習内容をもとに、申請者の属性から将来の結果を予測します。
  4. 予測が正しければ「よくできました!正解です」と伝えます。間違っていれば「いいえ、不正解です。改善してもう一度試してください」と伝えます。

この例は「分類(classification)」問題と呼ばれます。アルゴリズムの出力がカテゴリ――この場合は「承認」か「不承認」か――になるためです。分類問題のその他の例としては、以下のような判定が挙げられます。

  • ある人が病気にかかっているかどうか
  • X線画像に骨折が写っているかどうか
  • メールがスパムかどうか

ML分類アルゴリズムの背後にある数学に興味がある方は、「ナイーブベイズ分類器」「サポートベクターマシン」「ロジスティック回帰」「ニューラルネットワーク」「ランダムフォレスト」などを検索してみてください。

「はい/いいえ」の結果を出す分類問題に加えて、教師あり学習は回帰(regression)問題の解決にも活用できます。回帰では連続的な数値の予測を行います。たとえば:

  • 株価の将来価値
  • ニューイングランド・ペイトリオッツがスーパーボウルで優勝する確率
  • 候補者が内定を受諾するために必要な平均給与額

教師あり回帰問題に使われるアルゴリズムの例としては、線形回帰、非線形回帰、ベイズ線形回帰などがあります。

教師なし学習(Unsupervised Learning)

すべてのWeb開発者が機械学習を学ぶべき理由

先ほどの教師あり学習の例では、分類カテゴリ(承認/不承認)をあらかじめ定義していました。

一方、教師なし学習ではカテゴリを提供しません。そもそもカテゴリが利用できないのです。アルゴリズム自身が結論を導き出さなければなりません。

なぜ教師なしアプローチを使いたくなるのでしょうか?

1)事前にカテゴリがわからないことがあるからです。インターネット上にあふれるデータの多くは非構造化データ、つまりラベルのないデータです。

2)また、何を探せばよいかわからないこともあります。そんなときは、分類に役立つパターンや特徴をアルゴリズムに発見させることができます。

非構造化データを機械学習で扱うもう一つの方法は、人間が目視で確認し手作業でラベルを付けることです。実際、データの手動分類(アノテーション)のために作業者を雇っている企業はたくさんあります。

教師なし学習の主なアプローチ

教師なし学習でよく使われる手法として、「相関(アソシエーション)」と「クラスタリング」の2つがあります。

相関(アソシエーション): あなたがAmazonだと想像してください。大量の顧客データや購入履歴があります。教師なし学習を活用すれば、顧客を「買い物客のタイプ」に分割できます。たとえば、ピンクの傘を買う人は抹茶も一緒に購入しやすい、といった洞察が得られるかもしれません。

クラスタリング: クラスタリングはデータを分析し、指定した数のグループ(クラスタ)に分割します。たとえば、大量の住宅データをもとに、その家がどの地域にあるかを予測できる特徴(犯罪率データなど)があるかどうかを調べられます。また、コサイン類似度のような手法はテキスト分類にも使えます(この記事はテニス、料理、宇宙のどれについて書かれているか?など)。

特定の教師なし学習手法について詳しく知りたい方は、「k-meansクラスタリング」「コサイン類似度」「階層的クラスタリング」「k近傍法クラスタリング」などを検索してみてください。

強化学習(Reinforcement Learning)

すべてのWeb開発者が機械学習を学ぶべき理由

機械学習のこの分野は、目標指向型のアルゴリズムを利用するため、ゲームによく使われます。教師あり学習と異なり、各意思決定は独立していません。現在の入力に対してアルゴリズムが意思決定を行い、次の入力はその決定に依存するのです。

玄関のチャイムが鳴ったときに無駄吠えをやめたら犬の頭を撫でて褒め、鳴き止まなければケージに入れるのと同じように、強化学習のアルゴリズムは目標を最適化する意思決定(たとえば最大得点の獲得)をすれば報酬を得て、悪い判断をすればペナルティを受けます。

強化学習アルゴリズムの明らかな応用例には以下のようなものがあります。

  • チェスや囲碁などのゲーム(まだご覧でないなら、Netflixのドキュメンタリー『AlphaGo』をぜひおすすめします)
  • ロボティクス(望ましいタスクを遂行するようロボットを訓練)
  • 自動運転車
  • 株式市場に勝つように訓練されたロボアドバイザー

強化学習の背後にあるアルゴリズムについて詳しく知りたい方は、「Q学習」「SARSA(State-Action-Reward-State-Action)」「DQN」「A3C(Asynchronous Advantage Actor-Critic)」などを検索してみてください。

まとめ

これらの例を通じて、機械学習の各手法と、それらが今日の複雑な世界にどう影響を与えているのかをつかんでいただけたなら幸いです。学ぶべきことが多すぎて圧倒されそうになることもありますが、何もしないより一歩でも始める方がずっと良いのです。そして忘れないでください。この分野の多くは実はそれほど新しいものではありません。データがより入手しやすくなり、処理能力のコストが下がったことで、単に耳にする機会が増えただけなのです。

  1. データバックアップが必須である理由とは?大切なデータを守るための基本と対策

    災害はいつ起こるか誰にも予測できません。だからこそ、被害が訪れる前に備えておくことが重要です。3月31日は「世界バックアップデー」として定められており、データバックアップの重要性を再認識する日となっています。 バックアップとは、重要なデータの予備コピーのことです。スマートフォンの紛失、ハードディスクのクラッシュ、ランサムウェア攻撃によるシステム侵害など、いざというときにあなたを救ってくれる存在となります。 データバックアップが重要である理由 データ損失の多くは、人為的ミスやハードウェアの故障によって発生します。これらは予測不可能であり、ちょっとした日常の中でも簡単にデータを失うリスクにさら

  2. ビッグデータ・データマイニング・機械学習の違いとは?基礎から徹底解説

    ビッグデータ・データマイニング・機械学習の違いとは?基礎から徹底解説テクノロジーは目覚ましいスピードで進化しており、私たちは複雑に絡み合うデータのネットワークへと足を踏み入れつつあります。その一方で、世界中の企業はビッグデータ、データマイニング、機械学習といった革新的なテクノロジーの導入によって、事業の大転換を図ろうとしています。では、なぜ世界中のビジネスがこれらの技術の導入に躍起になっているのでしょうか?それぞれの基本的な概念とは何か、そして互いにどのような違いがあるのかを見ていきましょう。なぜビッグデータ、データマイニング、機械学習が必要なのか?データ需要の高まりと競争の激化により、各企業