連載
» 2018年04月18日 05時00分 公開

機械学習&ディープラーニング入門(概要編):Lesson 3 機械学習&ディープラーニングの、基本的なワークフローを知ろう (2/3)

[一色政彦,デジタルアドバンテージ]

(1)データの準備

図4 データの準備 図4 データの準備


藍:優しく教える

いいよ。まず初めに、「どんなAIサービスを作りたいのか」という目標が決まったら、そのためにどんなデータが必要かを検討するの。そして実際にデータを集める。例えば「犬と猫の画像判定を行うAIサービスを作りたい」としたら、どうすればいい?


マナブ:にっこり

犬と猫の画像のデータを集める必要があるよね。


藍:厳しく教える

そう。自分が大量にデータを保有していたり、自分で収集可能だったりするのなら、それを使う。もしそうでない場合は、誰かがどこかで提供してくれているデータセット(=データ集。例えばKaggle犬猫画像MNIST手書き文字画像ImageNet画像データベースなどがある)をダウンロードするか、インターネット上をクロール*1しながらWebスクレイピングWeb scraping*2して画像をかき集める必要があるわね。その際、もちろん利用許諾などには注意する必要があるよ。

*1 インターネット上のファイル群を自動的に捜索して、HTMLファイルや画像ファイルなどの情報データベースを作成していくこと。代表例としては、Google検索用の情報データベースを作る「Googlebot」がある。

*2 HTMLソースから必要な情報だけを抽出すること。



マナブ:にんまり

スクレイピングは以前にもやったことがあるなぁ。この手順は今の自分でもできそうだよ。


藍:激怒

(な、何ドヤ顔なのよ。私の開発力が優秀ってことじゃないの!)

(2)手法の選択

図4 手法の選択 図4 手法の選択


藍:厳しく教える

次に、どのような手法を採用するかを検討する。「ディープラーニングがいいか? ディープラーニングなら、CNNか? RNNか?」など、適切な機械学習の手法や、学習方法、アルゴリズムを選んだり、(まれだけど)適切なものがなければ独自に設計したりする。ちなみに、今回はディープラーニングを中心に話しているわけだけど、実際にはディープラーニングよりも、他の機械学習手法の方が精度が良かったり、効率的に作成できたりする場合があって、実際に現場ではディープラーニング以外を選択するケースも多いのよ。


マナブ:理解不納

ふ〜ん。この手順は、幅広い機械学習の知識と経験が必要そうだね。ボクにはまだ難しいかも。


藍:にっこり

そうね。まずはディープラーニングができるようになってから、少しずつ知識と経験を広げていくといいと思うわ。

(3)前処理

図5 前処理 図5 前処理


藍:優しく教える

で次に、収集しておいたデータから、必要なデータを選別する。ただし、選別したデータがそのままの形ですぐに使えるというのは、練習用データでもない限り、一般的な実用データではあまりないの。例えばデータの一部が欠損していたらそこにはランダム値を入れたりだとか、数値のフォーマットやテキスト項目がデータ入力者によってバラバラで統一されていなかったら名寄せ処理をしたりだとか、そのままでは機械学習で使用できないデータを何とかして使用可能な形に整える必要がある(=データクレンジングData cleansing、もしくはデータクリーニングData cleaning)。「暴れん坊の牛や馬を集めて飼いならす」みたいに力技が必要で大変だから、データラングリングData wrangling)って呼ばれたりもするのよね。


マナブ:がくっ

ネットで検索したら、“wrangler”は、馬などの家畜を操るために雇われたカウボーイのことだって書いてある。カウボーイかぁ…、大変そうだね。


藍:厳しく教える

ちなみに機械学習では、より良い結果が出るように、データの数値を前処理するためのテクニックがいろいろとあるの。最も代表的なものには次のものがあるよ。

  • 正規化Normalization): トレーニングデータの値が01などの指定範囲に収まるように、値を加工するテクニック
  • 標準化Standardization): トレーニングデータの平均が0、分散が1になるように、値を加工するテクニック

マナブ:理解不納

正規化…標準化…!? なんかピンとこないなぁ…。


藍:にっこり

そうだわね。そのあたりはそのうち具体的な例を見ながら学んでいくとしよう。


マナブ:質問

数値は前処理が必要として、画像データの場合は、前処理しなくていいのかな?


藍:優しく教える

画像の場合も、前処理をすることで精度が良くなることが多いの。例えば人の顔を画像認識させたいのであれば、顔をあらかじめ切り抜いておいた方が学習しやすいよね。このような画像や映像の加工には、OpenCVというライブラリがよく使われているのよ(参考:「OpenCV入門」)。


マナブ:にっこり

じゃ、文章データの場合は?

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。