ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Create MLにおける機械学習強化
Create MLを使えば、機械学習モデルで可能な事がさらに広がります。多言語のBERT埋め込みを使った画像理解やテキストベースのタスクに、最新のアップデートが加えられました。マルチラベル分類を使って画像のコンテンツを理解できるよう、容易にモデルをトレーニングする方法をご紹介します。また、インタラクティブモデル評価や、カスタムトレーニングデータオーグメンテーション用の最新のAPIについての情報も説明します。機械学習の詳細についての最新アップデートは、WWDC23の「Explore Natural Language multilingual models」および「Improve Core ML integration with async prediction」でご覧ください。
リソース
関連ビデオ
WWDC23
WWDC22
-
ダウンロード
♪ ♪
David:こんにちは David Findlayです Create MLチームの機械学習エンジニアです 私たちは Create ML Appに 大きな改善を加えてきました みなさんにその内容を 見てもらいたいと思います 大規模モデルを一からトレーニングするのは 非常に長い時間と 大量のアノテーションファイルと 専門家の知識を要します みなさんが理解しやすい内容で 機械学習を駆使した素晴らしいアプリを 作成できるようにするのが目標です 多くの機能が使える 最先端のモデルを作成するための プロセスを辿ってきましたが その機能には写真アプリの「検索」や アクセシビリティの カスタム音声認識などがあります Create MLではAppleの 最新のテクノロジーにアクセスできるので 自分のカスタム機械学習体験が 簡単に作成できます 最初に Create MLに加えた 改善点を説明します 次に マルチラベルでシーンを理解するための 機械学習モデルの 新しい作成方法を紹介します 最後は トレーニングデータが 限られている場合に モデルの質を改善するために 私たちがデザインした 新しい拡張APIについて話します テキスト分類の改善点から始めましょう Text Classifierは自然言語テキストの パターンを認知するようにデザインされた 機械学習タスクです このようなモデルのトレーニングでは テキストとラベルのペアの テーブルを与えればいいだけです この例では スポーツとエンター テインメントと自然のラベルです
事前学習埋め込みモデルを 特徴抽出として使う 転移学習アルゴリズムが選べます 今年は 新しい埋め込みモデルをデザインし 何十億ものラベル付きテキスト例で トレーニングしました Transformerを活用した双方向の エンコード表現モデルで 略してBERTです Create ML Appの新オプションは 設定タブのモデルパラメータ セクションにあります BERTの埋め込みモデルは多言語対応で トレーニングデータは 複数の言語を含むことが できるようになりました 多言語のtext classifierの サポートのみならず BERTは単一言語text classifierの 正解率も増大してくれます BERTはiOS 17やiPadOS 17 そしてmacOS Sonomaで利用できます その詳細をすべて網羅した動画があります 詳細は「Explore Natural Language multilingual models」で 是非 見てください 次は 画像分類タスクにおける 転移学習の使い方についてです Create MLのimage classifierは 自分の持つ画像コンテンツの説明に 最も適切なラベルは何かという 質問に答えるためのモデルを 作成するようにデザインされています text classifierのように image classifierも 画像からの関連情報を抽出する 事前学習モデルです 利用可能になったApple Neural Scene Analyzerの最新版なら 非常に少量のトレーニングデータで 最新のモデルが作成できます OS内の画像理解モデルは 可能な限り最高の体験を 提供するために進化を続けています さらなる詳細はAppleの 機械学習研究ウェブサイトで 私たちの記事を読んでください Create ML Appでは 設定タブの モデルパラメータセクションに 新しい特徴抽出オプションがあります
新しい特徴抽出は以前のものに比べ 出力埋め込みサイズが小さくなっています 一般的な改善点に加えて これで分類モデルの正解率が上がり トレーニングタイムも早くなり 抽出した特徴を保存するための メモリも少なくて済みます Create MLの改善点について話したので 今度は新しい複数言語の 画像分類器についてです その前に 単一ラベル画像分類は 画像のコンテンツを説明する ベストのラベルを予測するように デザインされていましたね 例えば この画像は「犬」か おそらく「屋外」と説明するでしょう ですが 選べるのは一つです 物体を探したいのであれば 物体検出を使ってシーン内の物体を 見つけることができます 例えば 犬の周りに バウンディングボックスを描き ボールの周りにももう一つ描きました これはこれで良いのですが 私が対象にしたいのは 物体が入っているシーンでもあります バウンディングボックスを描いて 「犬が公園にいる」とか 「屋外」を表せません そこで登場するのが 新しい 多ラベル画像分類器です 画像の物体や属性やラベルのセットを 予測できるようになります 例えばこの画像が含むのは 犬とおもちゃと芝生と公園です Create MLを使って 一つ作成してみましょう いつも通り 最初にやるべき事は トレーニングデータの収集です 少し楽しみたいので 異なるシーンにある多肉植物を 検出する分類子を作成することにしました 例えば この画像にはハルオチアと クラッスラとアロエが 鉢に入って窓枠に置かれています 次の画像では 人が鉢植えの サボテンを持っています トレーニングイメージの収集では アロエだけの写真のような 単一ラベルの画像を何枚か 入れても構いません アノテーションはJSON fileで 整理する必要があります 各ファイルをアノテーションのセットで 注釈付けすればいいだけです
Create ML Appでモデルを作成する デモを 今から見せましょう Create ML Appで新しいマルチラベル 画像分類器テンプレートを選びます
そして「多肉植物分類子」いう名前の プロジェクトを作成します
すると設定タブへと移ります 最初にトレーニングデータをドラッグすると クラスとトレーニング画像の 数の要約を見せてくれます
検証データをドラッグするという オプションもありますが 今はトレーニングデータを ランダムに分ける事にします デフォルトの反復数を使い また 拡張は省きます モデルの設定は終わったので 次のTrainをクリックします
このモデルのMacでのトレーニングは 数分しかかかりません モデルはすぐに 先ほど紹介した 新しい特徴抽出を使って 特徴の抽出を始めます それが終わると 分類器の トレーニングを始めます トレーニングの過程で モデルの質を測る方法は Mean Average Precision 略してMAPの スコアを計算する事です 一般的には MAPスコアを 最大化したいわけですが それはモデルがデータセットの すべてのラベルに対して より高い適合率とより高い再現率を 両方持っているという意味だからです 私のモデルはトレーニングを終え 74反復で早目に収束し トレーニングセットでのMAPスコアは97% 検証セットでは93%でした 次のステップは テストデータでの モデルの評価です
デスクトップからフォルダをドラッグし Testボタンをクリックします
テストデータは モデルのトレーニングで使ったのと 同じクラスラベルのセットを 含んでいなければなりません アプリは高度な統計を行って 例えば MAPスコアや どのクラスラベルが 最高と最低の精度と再現率であるかなどを示します Metricsタブに注目しましょう アプリは各クラスラベルの評価指標を計算し 例えば 偽陽性や偽陰性や適合率 再現率や予測モデルのしきい値を提供します このモデルで予測を行うときは 所定のクラスラベルのしきい値より 信頼度が高い場合は 予測が正しい事になります アロエの予測モデルしきい値より 高いとモデルが予測した画像を 見ていきましょう 例をクリックします
モデルは90%の信頼度で アロエを含むこの画像を予測し これはアロエの予測しきい値の 40%より上です ほかのラベルでは モデルは それぞれのしきい値より 低い信頼度を予測しました 言い換えれば モデルはそれらを 予測しなかったわけです 次に見ていく画像は モデルが アロエだと予測しなかったのに アロエだとラベル付けたものです そのためには 偽陰性の結果タイプを選択します
この画像は面白いです もう少し見てみましょう ここではアロエが 玉サボテンと ヒボタンの後ろにあるので モデルはアロエの予測が困難になります ですが嬉しい事に モデルはほかの 二つのラベルを正しく予測しました 次は プレビュータブに移ります
ここでは まだラベル付けしていない 画像に対するモデルの予測が プレビューできます 私が自分で並べた 多肉植物がありますが 試したら面白そうです
みてください モデルは私のキッチンにある ヒボタンと キンエボシと玉サボテンを 正しく予測しました このモデルの品質にかなり満足ですが モデルの限界を理解するために 実験を続けながら データセットにもっと 多肉植物を追加していきます 今は 次に進みましょう Outputタブから トレーニングしたモデルを ディスクに保存できます
予測の作成に必要なコードを 見ていきましょう 最初のステップは コンパイルされた Core MLモデルからVisionモデルの作成です そしてVisionのフレームワークを使って ソースイメージ付きの イメージリクエストハンドラを作り リクエストを行います
最後に 分類の観察を取得してから 自分の狙った適合率と再現率を使って それらをふるい分けします 自分のケースに合った 適合率と再現率の値を選ぶ方法について 詳しい情報を得るには WWDC 2019の動画 「Understanding Images in Vision Framework」を見てください 次に進む前に みなさんに 伝えておきたいのですが 画像分類器やマルチラベル画像分類器と同様に 評価タブも強化され 物体検出のオプション探索が付いています 是非 試してください では 今からお話しする最後のトピックは データ拡張を使って 限られたデータで 機械学習モデルをトレーニングする事です 一般化に優れたモデルを生むには トレーニングセットの画像に 様々な特徴があるべきで 例えば 異なる照明の向きや背景などです 異なる状況でのトレーニングイメージを キャプチャしたりラベル付けするのは 非常に時間がかかります データ拡張は トランスフォーメーションを 適用する事で 既存のトレーニングサンプルから 新しいものを生成する技術です 画像の場合 トランスフォーメーションは 水平反転または垂直反転や クロップ コントラストなど 様々です この例では 多肉植物の画像で始め 四つのバリエーションを生成します 反転やコントラスト増加などの トランスフォーメーションも使えます 拡張でモデルの質が上がります トレーニングセットが 小規模の場合はなおさらです 拡張を使えばモデルの汎化が向上するのは シーン内の物体が正確な場所に あるというような属性を モデルが学習するのを阻止できるからです ですが トレーニングは通常 もう少し時間がかかると考えるべきで それは特徴抽出が それぞれの反復で起こるからです まだ見ていない方は是非 Create ML Componentsを紹介した WWDC 2022の動画を見てください トランスフォーマや推定器のような コンポーネントを使って カスタムの機械学習モデルを作る フレームワークをデザインしました 今年は 自分自身の拡張パイプラインを デザインするのに使える 新しい拡張APIを追加しました SwiftUIを使った事があれば お馴染みかもしれません 最初のステップはオーグメンタの作成です SwiftUIと同様に オーグメンタは result builderを使います オーグメンタのボディにデータを拡張する トランスフォーメーションを追加できます オーグメンタは包括的なので データはラベル付けされた画像でも ラベル付けされた音でも ほかの何でも構いません 大事なのは各トランスフォーメーションの 入力タイプと 出力タイプが一致している事です 例えば 画像を取り入れる事と 画像を作成する事です 画像を水平反転して 50%の確率で 拡張したいと思います まずは オーグメンタに ApplyRandomlyを追加します これでトランスフォーメーションに 一定の確率が適用されます そしてそのボディに水平反転の トランスフォーマを追加します これでオーグメンタができたので それを使った拡張の作成を 応用メソッドを呼び出して行います 拡張をデザインする時は 自分のデータの性質を注意深く 考える事が重要です 逆さまになった多肉植物というのは あまり目にしません なので垂直反転は この場合 行う意味がありません あるいは代わりに道路標識の 分類をしたいと考えましょう 反転の拡張を適用すると ラベルはもはや画像の説明を 正しく行えません ですから カスタムの拡張を デザインする前に データの性質を考えましょう では次のステップで オーグメンタに 更にトランスフォーメーションを加えます
今度はUniformRandomFloating PointParameterを使って 画像を無作為に回転させます これで拡張を適用するたびに 無作為な角度を生成します そして最後は 画像の無作為な切り出しです それぞれのトランスフォーメーションは 順番に適用されます ですからまず 画像は無作為に反転されます その結果が無作為に回転され そして無作為に切り出されます まだ オーグメンタでできる事の ほんの一部しかお話ししていません 最初に使えるコンポーネントが ここにいくつか出ています これでは物足りないですか? カスタムのトランスフォーメーションを 作成し それを使って画像を拡大する 例を見ていきましょう
ロバストな分類子を作るためには トレーニングイメージを 異なるシーンや環境で キャプチャする事が重要です この例では 多肉植物を無作為なシーンの 無作為な位置に置く カスタムの拡張を作ります
まずはRandomImageBackgroundの 定義からです 新しいプロトコルの RandomTransformerに準拠するもので トランスフォーマに似ていますが 乱数発生器を使います 異なる背景シーンの中に 無作為に多肉植物を置くような 拡張が欲しいので 背景画像を使うイニシャライザを 作成しようと思います RandomTransformerプロトコルに 準拠するために 応用メソッドを実行する必要があります この拡張を適用するのに 最初に行うステップは 無作為な背景の選択です それから背景画像の中の 無作為な位置を選び そこに入力画像を配置しますが 切り出しはしません 次に 入力画像を無作為な位置に移します 最後に 無作為に選んだ背景の上に 入力画像を配置します 新しいカスタム拡張を最後に加え 多肉植物を異なる背景に置く前に 反転や回転や切り出しが 行われるようにします これでオーグメンタの完成です このオーグメンタを使って トレーニング分類器のための 面白い画像が生成できます それが次のステップです 拡張を使う時は 更新式のメソッドを使って 徐々にトレーニングするのが 理に適っています その事を念頭に 拡張を使ったトレーニングの 例を見ていきましょう 遠慮はしませんよ バッチ学習も ランダマイゼーションも 早期終了も取り入れます まずは 空っぽの画像分類器モデルの 作成から始めます そして トレーニングループの作成です その最初のステップはトレーニング イメージのシャッフルと拡張です 拡張の前にシャッフルすれば 反復のたびに バッチには 異なる画像が含まれるようになります オーグメンタの結果は非同期シーケンスで トランスメーションがダラダラと 起こるという事を意味します バッチ学習を使って 拡張の非同期シーケンスを グループ化する事ができます この例では バッチサイズは16にしました 最後に 拡張された画像の各バッチで モデルを更新します このような理由で データ拡張をする時は 更新式メソッドが 良い選択肢だというわけです 反復のたびに 新しい画像セットができます オーグメンタによりますが 更新式メソッドなら まったく同じ画像に複数回 遭遇する事は考え難いですね これによってモデルは記憶ではなく 一般化するようになります 私は反復数を100にしましたが 理想的には 正解率が 伸びなくなった時点で トレーニングを終了するべきです この例では トレーニングの 正解率は伸び続けますが 検証データの正解率が 数回反復したあとに下がり始めています
これはモデルがトレーニングデータを 記憶しているという意味で 新しいデータへの一般化が下がり 検証やテストデータでの パフォーマンスが悪化します トレーニングを続けるのは有害です 最後の例として トレーニングループに 早期終了を追加します 更新ステップのあとに 検証評価指標を計算できます 私は検証正解率を使って 早期終了を行なっていますが これは分類器モデルに有効です ですが みなさん次第です 検証データの損失も使えますし モデルの質を評価するために 自分の評価指標のデザインもできます 最終の5回の反復で 正解率が伸びなかった時点で トレーニングループから抜けます 拡張された画像分類器については これで終わりです この動画では みなさんのアプリに 素晴らしい機械学習体験を作成できる OS内蔵の最新モデルを紹介しました そして新しいマルチラベル画像分類器を使って シーンを理解するためのモデルを 作成する方法の例を見せました 最後に モデルの質を向上させるための カスタム拡張を作成する方法を 詳しく見ていきました 以上で終わりです Create MLで是非みなさんのアプリを 強化してください
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。