概要
たとえば、あなたは建造物保存委員会と仕事をしているとします。委員会は、ある一定の建築様式を持つ市内地区を特定しようとしています。何十万件もの住宅のスナップショットをふるいにかける必要がありますが、それらすべての画像を手作業で分類するのは、繰り返しが多くミスも起こりやすいものです。数か月前に 1 人の実習生がラベルを数百件付けましたが、それ以降は誰も何も行っていません。この作業を代行する方法をコンピュータに教えられるとしたら、とても便利でしょう。
機械学習(ML)がこの問題に適したツールである理由
従来型のプログラミングでは、プログラマがコンピュータに手順を 1 つずつ指示して従わせる必要があります。このようなアプローチはさまざまな問題の解決に役立ちますが、適切な方法で住宅を分類するには不向きです。住宅は構成、色、角度など、様式の細部が非常に多岐にわたるため、それがクラフツマン様式なのかモダン様式なのかを写真から判断する方法を機械に教えるための一連のルールを考え出すことは無理な話です。どこから始めればいいのか想像することさえ困難です。幸いなことに、機械学習システムはこのような問題を解決するのに適しています。
Vision API と AutoML のどちらのツールが適切か
Vision API は、事前定義済みの何千ものカテゴリに画像を分類します。そして画像内の個々の物体や顔を検出したり、画像に含まれている印刷文字を見つけて読み取ったりします。データセット内の個々の物体、顔、テキストを検出したい場合や、ごく一般的な画像分類を行いたい場合は、Vision API を試して適しているかどうかを確かめてみてください。しかし、独自のラベルを使用して画像を分類する必要がある場合は、カスタム分類を試して、ニーズに合うかどうか調べてみることをおすすめします。
Vision API を試す | AutoML を使ってみる |
AutoML の機械学習には何が含まれるか
機械学習で望ましい結果を得るには、データを使用してアルゴリズムをトレーニングする必要があります。アルゴリズムの詳細やトレーニング方法は、ユースケースに応じて変わります。機械学習にはさまざまなサブカテゴリがあり、それらはすべて異なる問題を解決し、異なる制約の中で動作します。AutoML Vision を使用すると、ラベル付きデータからパターンを認識するようコンピュータをトレーニングする「教師あり学習」を実行できます。教師あり学習を使用することで、関心のあるパターンやコンテンツを画像で認識するようモデルをトレーニングできます。
データの準備
AutoML Vision を使用してカスタムモデルをトレーニングするには、分類する画像のラベル付きサンプル(入力)と、ML システムに予測させるカテゴリまたはラベル(回答)を提供する必要があります。
ユースケースを評価する
データセットを用意するときは、常にユースケースの検討から始めます。まずは以下の点を考慮します。
- どのような結果を得ようとしているのか。
- その結果を得るには、どのようなカテゴリを認識する必要があるか。
- 人間がそれらのカテゴリを認識することは可能か。AutoML Vision は、人間が一度に覚えて割り当てるよりも多くのカテゴリを処理できますが、人間が認識できないカテゴリは AutoML Vision でも認識することは難しいです。
- システムに分類させるデータの種類と範囲を最もよく反映するサンプルはどのようなものか。
Google の ML プロダクトを支える基本原則は、人間を中心とした機械学習です。これは、責任ある AI への取り組みを重視したアプローチであり、公平性への取り組みなどが含まれます。ML における公平性の目的とは、過去に差別や過小評価の対象になった人種、収入、性的志向、宗教、性別などの特性を理解し、そのような特性がアルゴリズム システムやアルゴリズムによる意思決定に現れる場合に、不公平で偏見的な扱いを防止することです。詳細についてはガイドをお読みいただくか、ガイドラインの「公平性の認識」の注記 ✽ でご確認いただけます。データセットを用意するためのガイドラインを読み進めながら、ご自身のユースケースに関係するところで機械学習における公平性について検討してみてください。
データを調達する
必要なデータが決まったら、データの調達方法を見つける必要があります。まず、組織で現在収集しているあらゆるデータを考慮に入れるところから始めます。モデルのトレーニングに必要なデータがすでに収集されている場合もあります。必要なデータがない場合、自力で収集することも、サードパーティ プロバイダにデータの収集を委託することもできます。
十分な数のラベル付きサンプルを各カテゴリに含める
AutoML Vision のトレーニングでは、カテゴリ / ラベルごとに最低でも 100 枚の画像が必要です。各ラベル用の高品質のサンプルが増えるにつれて、ラベルをうまく認識する可能性が高まります。一般的には、トレーニング プロセスに取り入れるラベル付きデータが多いほど、モデル品質は向上します。1 ラベルあたり 1,000 件以上のサンプルを目標にしてください。
カテゴリごとに均等にサンプルを分布させる
カテゴリごとにほぼ同じ数量のトレーニング サンプルを取り込むことが重要です。1 つのラベルに対して豊富なデータがある場合でも、各ラベルの分布を均等にするのがベストです。たとえば、モデルの構築に使用する画像の 80% がモダン様式の一戸建て住宅の写真だとします。このようにラベルの分布が不均等な場合、モデルはあえて危険を冒して一般的でないラベルを予測するよりも、常にモダン様式の一戸建て住宅の写真だと報告する方が安全だと学習する可能性がかなり高くなります。これは、多肢選択式テストを作るときにほとんどすべての正解を「C」にするようなものです。抜け目のない受験生なら、質問を見なくても毎回「C」と答えればよいことにすぐに気付くでしょう。
もちろん各ラベルにほぼ同数のサンプルを調達することは、常に可能であるとは限りません。カテゴリによっては、高品質でバイアスのないサンプルを調達することが困難な場合もあります。そのような状況では、だいたいの目安として、最もサンプル数の少ないラベルのサンプル数が、最もサンプル数の多いラベルの 10% 以上になるようにします。したがって、最もサンプル数の多いラベルに 10,000 個のサンプルがある場合、最もサンプル数の少ないラベルには少なくとも 1,000 個のサンプルが必要になります。
問題空間内のバリエーションを収集する
同様の理由で、問題空間内の多種多様なデータを集めるようにしてください。モデルのトレーニング プロセスで体験する種類が多ければ多いほど、新しいサンプルを一般化しやすくなります。たとえば、家電製品の写真をカテゴリに分類しようとしている場合、トレーニングでモデルに使用する家電製品の種類が多ければ多いほど、見たことのない新機種のタブレット、スマートフォン、ラップトップなどを区別できる可能性が高まります。
モデルの意図する出力にデータを合わせる
予測の対象になるものと視覚的に似ている画像を探します。たとえば、冬の雪の日に撮影されたさまざまな家の画像を分類する場合、晴れた日に撮影された家の画像だけでトレーニングされたモデルを使うと、明暗と風景があまりに違いすぎるため、関心のある分類であらかじめタグ付けしたとしても、おそらく良いパフォーマンスは得られないでしょう。トレーニングのサンプルは、そのモデルを使用して分類する予定のものと同じデータセットから作成された実世界のデータにするのが理想的です。
カスタムモデルの作成時に AutoML Vision がどのようにデータセットを使用するかを考慮する
データセットには、トレーニング セット、検証セット、テストセットが含まれます。データセットの分割を指定しない場合(データの準備を参照)、AutoML Vision は自動的に 80% をトレーニングに、10% を検証に、10% をテストに使用します。
トレーニング セット
データの大部分をトレーニング セットに含めるようにします。これはトレーニング中にモデルが「見る」データであり、モデルのパラメータ、つまりニューラル ネットワークのノード間の接続の重みを学習するために使用されます。
検証セット
検証セットは「dev」セットとも呼ばれ、やはりトレーニング プロセス中に使用されます。モデルの学習フレームワークは、トレーニング プロセスの各イテレーションでトレーニング データを取り込んだ後、検証セットに対するモデルのパフォーマンスに基づき、そのハイパーパラメータ(モデルの構造を指定する変数)を調整します。トレーニング セットを使用してハイパーパラメータを調整しようとすると、モデルがトレーニング データに過度に適合してしまい、正確に一致しないサンプルを一般化するのが困難になる可能性が高いです。多少違ったデータセットを使ってモデル構造を細かく調整することで、モデルがより適切に一般化されます。
テストセット
テストセットはトレーニング プロセスにはまったく使用されません。モデルのトレーニングが完了したら、モデル向けのまったく新しい課題としてテストセットを使用します。テストセットに対するモデルのパフォーマンスを知ることで、モデルが実世界のデータに対してどのように機能するかをおおよそ理解できます。
手動分割
自分でデータセットを分割することもできます。手動でデータを分割することは、より詳細にプロセスを制御したい場合や、モデルのトレーニング ライフサイクルの特定の部分に特定のサンプルを確実に含めたい場合に適しています。
インポートするデータを準備する
データの手動分割と自動分割のどちらが適切かを判断したら、3 つの方法で AutoML Vision にデータを追加できます。
- 画像を並べ替え、ラベルに対応するフォルダに保存してデータをインポートできます。
- Google Cloud Storage から、ラベルを埋め込んだ CSV 形式のデータをインポートできます。詳しくは、Google のドキュメントをご覧ください。
- データにまだラベル付けが行われていない場合は、ラベル付けが行われていない画像のサンプルをアップロードし、AutoML Vision UI を使用してそれぞれにラベルを適用することもできます。
評価
モデルのトレーニングが終了すると、モデルのパフォーマンスの要約が届きます。詳細な分析を表示するには、[評価] または [評価全体を見る] をクリックします。
モデルを評価する前の留意点
モデルのデバッグは、モデル自体よりもデータを対象とするものです。本番環境への移行前や移行後にパフォーマンスを評価しているとき、モデルが予期しない動作をするようになった場合は、立ち戻ってデータを確認し、改善の余地がある箇所を見つける必要があります。
AutoML Vision ではどのような分析を実行できるか
AutoML Vision の評価セクションでは、テストサンプルに対するモデル出力と、一般的な機械学習の指標に基づいて、カスタムモデルのパフォーマンスを評価できます。このセクションでは、以下の各コンセプトの意味について説明します。
- モデルの出力
- スコアしきい値
- 真陽性、真陰性、偽陽性、偽陰性
- 適合率と再現率
- 適合率 / 再現率曲線
- 平均適合率
モデルの出力をどのように解釈すればよいか
AutoML Vision はテストデータからサンプルを取り出し、まったく新しい課題をモデルに提示します。モデルはそれぞれのサンプルについて、各ラベルがそのサンプルにどれくらい強く関連付けられているかを示す一連の数値を出力します。数値が高い場合、高い信頼度でそのラベルをドキュメントに適用できるとモデルが判断したことを示します。
スコアしきい値とは
スコアしきい値を設定することにより、上記の確率をオン / オフの値に変換できます。スコアしきい値とは、モデルで特定のテスト項目にカテゴリを割り当てるために必要な信頼度です。UI のスコアしきい値スライダーは、データセット内のすべてのカテゴリと個々のカテゴリに対するさまざまなしきい値の影響をテストするための視覚的なツールです。スコアしきい値が低い場合、モデルはより多くの画像を分類しますが、いくつかの画像が誤って分類されるリスクがあります。スコアしきい値が高い場合、モデルが分類する画像は少なくなりますが、画像が誤って分類されるリスクも低くなります。UI でカテゴリごとにしきい値を微調整して実験できます。ただし、本番環境でモデルを使用するときには、ご自身が最適であると判断したしきい値を適用する必要があります。
真陽性、真陰性、偽陽性、偽陰性とは
スコアしきい値を適用すると、モデルの予測は次の 4 つのカテゴリのいずれかになります。
これらのカテゴリを使用して、モデルの有効性の評価に役立つ指標である適合率と再現率を計算できます。
適合率、再現率とは
適合率と再現率は、モデルがどの程度適切に情報を取得しているか、そしてどれだけの情報を除外しているかを把握するのに役立ちます。適合率は、ラベルが割り当てられたすべてのテストサンプルのうち、実際にそのラベルに分類される必要のあるものの数を示します。再現率は、ラベルが割り当てられる必要のあるすべてのテストサンプルのうち、実際にラベルが割り当てられたものの数を示します。
適合率や再現率を高めるために最適化する必要があるか
ユースケースに応じて、適合率または再現率のいずれかを高めるために最適化することをおすすめします。それを判断する材料として、次の 2 つのユースケースを考えてみましょう。
ユースケース: 画像のプライバシー
機密情報を自動的に検出し、それをぼかすシステムを作成するとします。
この場合の偽陽性は、ぼかす必要がないものがぼかされることです。目障りですが、弊害はありません。
この場合の偽陰性は、クレジット カードのように、ぼかす必要があるものがぼかされないことです。これは個人情報の盗難につながる恐れがあります。
この場合は、再現率を高めるように最適化することをおすすめします。この指標は、行われたすべての予測において、除外された量を測定します。再現率の高いモデルでは、わずかな関連性を持つサンプルにもラベルを付ける可能性が高いため、カテゴリのトレーニング データが少ない場合に役立ちます。
ユースケース: ストックフォトの検索
特定のキーワードに対応する最適なストックフォトを見つけるシステムを作成するとします。
この場合の偽陽性は、無関係な写真を検出してしまうことです。最も適した画像だけを返すことを謳った検索機能であるため、これは大きな失敗です。
この場合の偽陰性は、キーワード検索に該当する画像を返すのに失敗することです。多くの検索語では、一致する可能性の高い写真が何千枚もあるため、これは問題になりません。
この場合、適合率を高めるように最適化することをおすすめします。この指標は、行われたすべての予測がどの程度正しいかを測定します。適合率の高いモデルは、関連性が特に高いサンプルのみにラベルを付ける可能性が高いため、対象となる的の分類がトレーニング データ内によく見られる場合に便利です。
混同行列の使用
混同行列を使用すると、各ラベルに対するモデルのパフォーマンスを比較できます。理想的なモデルでは、対角線上のすべての値が高くなり、他の値はすべて低くなります。これは、目的のカテゴリが正しく識別されていることを示しています。他の値が高い場合は、モデルがテスト画像をどう誤って分類しているかを知るための手がかりとなります。
適合率 / 再現率曲線はどのように解釈すればよいか
スコアしきい値ツールを使用すると、選択したスコアしきい値が適合率と再現率にどう影響するかを調べることができます。スコアしきい値バーのスライダーをドラッグすると、そのしきい値が適合率と再現率のトレードオフ曲線のどこに位置するのか、またそのしきい値が適合率と再現率のそれぞれにどう影響するのかを見ることができます(多分類モデルの場合、これらのグラフの適合率と再現率は、適合率と再現率の指標の計算に使用される唯一のラベルが、返されるラベルのセットの中で最も高いスコアを持つラベルであることを意味します)。これは、偽陽性と偽陰性のバランスを取るのに役立ちます。
モデル全体で許容できると思われるしきい値を選択したら、個々のラベルをクリックし、そのしきい値が各ラベルの適合率-再現率曲線のどこに位置するかを確認できます。場合によっては、いくつかのラベルで誤った予測が多くなることがあります。その場合は、これらのラベルにカスタマイズした分類別のしきい値を選択できます。たとえば、住宅のデータセットを見た際に、しきい値が 0.5 の場合に、すべての画像タイプに対して合理的な適合率と再現率が得られることに気づいたとします。ただし画像タイプが「Tudor」の場合は例外的にこの傾向が見られませんでした。おそらくこれは「Tudor」が非常に一般的なカテゴリであるためです。このカテゴリでは、偽陽性が数多く見られます。この場合、予測のための分類子を呼び出すときに、「Tudor」のしきい値だけを 0.8 にできます。
平均適合率とは
モデル精度については、適合率 / 再現率曲線の下の領域が有用な指標となります。これは、モデルがすべてのスコアしきい値にわたってどの程度良好に機能しているかを測定します。AutoML Vision では、この指標は「平均適合率」と呼ばれます。このスコアが 1.0 に近ければ近いほど、モデルはテストセットに対して適切に機能しています。各ラベルについてランダムに推測するモデルの場合に得られる平均適合率はおよそ 0.5 です。
モデルのテスト
AutoML Vision は、自動的にデータの 10%(ただしデータ分割を自分で行った場合は、選択したパーセント)を使ってモデルをテストします。テストデータに対するモデルのパフォーマンスは [評価] ページに表示されます。モデルの信頼度をチェックしたい場合は、いくつかの方法があります。最も簡単な方法は、[予測] ページにいくつかの画像をアップロードし、サンプルに対してモデルが選択するラベルを確認することです。モデルの性能が良ければ、これで期待に沿った結果が得られるはずです。受け取ると予想される各種画像のサンプルをいくつか試してみてください。
モデルを独自の自動テストで使用する場合、[予測] ページにはモデルをプログラムで呼び出す方法も示されています。