いいよ。まず初めに、「どんなAIサービスを作りたいのか」という目標が決まったら、そのためにどんなデータが必要かを検討するの。そして実際にデータを集める。例えば「犬と猫の画像判定を行うAIサービスを作りたい」としたら、どうすればいい?
犬と猫の画像のデータを集める必要があるよね。
そう。自分が大量にデータを保有していたり、自分で収集可能だったりするのなら、それを使う。もしそうでない場合は、誰かがどこかで提供してくれているデータセット(=データ集。例えばKaggle犬猫画像/MNIST手書き文字画像/ImageNet画像データベースなどがある)をダウンロードするか、インターネット上をクロール*1しながらWebスクレイピング(Web scraping)*2して画像をかき集める必要があるわね。その際、もちろん利用許諾などには注意する必要があるよ。
*1 インターネット上のファイル群を自動的に捜索して、HTMLファイルや画像ファイルなどの情報データベースを作成していくこと。代表例としては、Google検索用の情報データベースを作る「Googlebot」がある。
*2 HTMLソースから必要な情報だけを抽出すること。
スクレイピングは以前にもやったことがあるなぁ。この手順は今の自分でもできそうだよ。
(な、何ドヤ顔なのよ。私の開発力が優秀ってことじゃないの!)
次に、どのような手法を採用するかを検討する。「ディープラーニングがいいか? ディープラーニングなら、CNNか? RNNか?」など、適切な機械学習の手法や、学習方法、アルゴリズムを選んだり、(まれだけど)適切なものがなければ独自に設計したりする。ちなみに、今回はディープラーニングを中心に話しているわけだけど、実際にはディープラーニングよりも、他の機械学習手法の方が精度が良かったり、効率的に作成できたりする場合があって、実際に現場ではディープラーニング以外を選択するケースも多いのよ。
ふ〜ん。この手順は、幅広い機械学習の知識と経験が必要そうだね。ボクにはまだ難しいかも。
そうね。まずはディープラーニングができるようになってから、少しずつ知識と経験を広げていくといいと思うわ。
で次に、収集しておいたデータから、必要なデータを選別する。ただし、選別したデータがそのままの形ですぐに使えるというのは、練習用データでもない限り、一般的な実用データではあまりないの。例えばデータの一部が欠損していたらそこにはランダム値を入れたりだとか、数値のフォーマットやテキスト項目がデータ入力者によってバラバラで統一されていなかったら名寄せ処理をしたりだとか、そのままでは機械学習で使用できないデータを何とかして使用可能な形に整える必要がある(=データクレンジング:Data cleansing、もしくはデータクリーニング:Data cleaning)。「暴れん坊の牛や馬を集めて飼いならす」みたいに力技が必要で大変だから、データラングリング(Data wrangling)って呼ばれたりもするのよね。
ネットで検索したら、“wrangler”は、馬などの家畜を操るために雇われたカウボーイのことだって書いてある。カウボーイかぁ…、大変そうだね。
ちなみに機械学習では、より良い結果が出るように、データの数値を前処理するためのテクニックがいろいろとあるの。最も代表的なものには次のものがあるよ。
正規化…標準化…!? なんかピンとこないなぁ…。
そうだわね。そのあたりはそのうち具体的な例を見ながら学んでいくとしよう。
数値は前処理が必要として、画像データの場合は、前処理しなくていいのかな?
画像の場合も、前処理をすることで精度が良くなることが多いの。例えば人の顔を画像認識させたいのであれば、顔をあらかじめ切り抜いておいた方が学習しやすいよね。このような画像や映像の加工には、OpenCVというライブラリがよく使われているのよ(参考:「OpenCV入門」)。
じゃ、文章データの場合は?
Copyright© Digital Advantage Corp. All Rights Reserved.