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

» 2018年04月18日 05時00分 公開
[一色政彦デジタルアドバンテージ]

(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入門」)。


マナブ:にっこり

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


藍:厳しく教える

自然言語のテキストデータを、品詞情報に基づき、意味の最小単位である「形態素(けいたいそ)」に分解する技術を形態素解析Morphological Analysis)と呼ぶんだけど、まずはデータの前処理として形態素を切り出しておくの。日本語の形態素解析では、MeCabというライブラリがよく使われているよ。


マナブ:にんまり

OpenCVとMeCabは、暇なときに試してみるよ。あと「データ拡張」というのは?


藍:にっこり

主に、不足する画像データを補うために使われるテクニックで、その内容は次のとおり。自前で用意するデータは不足しがちなので、最近では頻繁に利用されているのを見かけるわね。

  • データ拡張Data augmentation): トレーニングデータの画像に対して移動/回転/拡大/縮小/歪曲/ノイズ付加などの操作をすることで、データ数を何倍にも増やすテクニック

マナブ:にっこり

なーるほど。画像を加工して、たくさんの画像があるものとして学習させるわけだ。それにしても、データを学習する前には、いろんなことをやるんだね。


藍:厳しく教える

前処理で学習結果が変わってくるから、意外に重要なのよね。手順(5)からここに戻ってきて、試行錯誤しながら機械学習モデルの再作成を何回も繰り返すこともあるので、意外にこの手順(3)の作業時間が一番長かったりするのよ。


マナブ:質問

「学習・評価用にデータを分割」とあるけど、データを分けるの?


藍:優しく教える

教師あり学習では、何度も登場しているトレーニングデータとは別にあと2つ、合わせて下記の3つのデータセットに分ける必要があるの。

  • トレーニングデータtraining data、もしくは訓練データ
  • 精度検証データvalidation data、もしくは評価データevaluation data
  • テストデータtest data

マナブ:理解不納

教師あり学習以外は?


藍:にっこり

教師なし学習や強化学習は、正解ラベルと一致するかチェックしてパフォーマンス(性能)を評価する必要がないから、精度検証データは用意せずに、

  • トレーニングデータ
  • テストデータ

の2つのデータセットに分割すればいいよ。


マナブ:質問

精度検証データとテストデータは何が違うの?


藍:厳しく教える

精度検証データは、手順(5)の「モデルの評価」で使うチューニング用データのことだよ。一方、テストデータは、同じく手順(5)で完成候補のモデルに対して使う最終テスト用のデータね。学習やチューニングに使ったデータは良い結果が出るようにバイアスがかかっている可能性があるので、そういったバイアス問題などを回避するためにも、最終テストには全く未使用のデータを使った方がいいから、この2つは分けておくの。


マナブ:理解不納

確かに、学習に使っていないデータが全く残っていないと、本番環境のAIサービスをチェックする際にも困りそうだもんね。気を付けないと。で、全てのデータに対して、どれくらいの割合で分割すればいいの?


藍:優しく教える

それはケース・バイ・ケースなので一概に言えないよね。強いて目安を挙げるとすると、3つのデータセットに分割する場合は、

  • トレーニングデータ: 70%
  • 精度検証データ: 20%
  • テストデータ:10%

ぐらい。2つのデータセットに分割する場合は、

  • トレーニングデータ:80%
  • テストデータ: 20%

ぐらいがよいと思うよ。でも、データ量がかなり多いとき、例えば数百万のデータがあるなら、テストデータに数十万も必要ないだろうから、通常は精度検証データやテストデータの割合をもっと減らして、その分、トレーニングデータの割合を増やした方がいいわね。

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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