1。概要
TensorFlow Lite と Firebase Codelab を使用したテキスト分類へようこそ。この Codelab では、TensorFlow Lite と Firebase を使用してテキスト分類モデルをトレーニングし、アプリにデプロイする方法を学びます。この Codelab は、この TensorFlow Liteの例に基づいています。
テキスト分類は、その内容に従ってテキストにタグまたはカテゴリを割り当てるプロセスです。これは、自然言語処理 (NLP) の基本的なタスクの 1 つであり、感情分析、トピックのラベル付け、スパム検出、意図検出などの幅広い用途に使用されます。
感情分析とは、テキスト分析手法を使用して、テキスト データ内の感情 (ポジティブ、ネガティブ、ニュートラル) を解釈および分類することです。感情分析により、企業はオンラインでの会話やフィードバックから、製品、ブランド、またはサービスに対する顧客の感情を特定できます。
このチュートリアルでは、感情分析用の機械学習モデルを構築する方法、特にテキストをポジティブまたはネガティブに分類する方法を示します。これは、2 値 (2 クラス) 分類の例であり、重要かつ広く適用可能な種類の機械学習の問題です。
学習内容
- TF Lite Model Maker を使用して TF Lite 感情分析モデルをトレーニングする
- TF Lite モデルを Firebase ML にデプロイし、アプリからアクセスする
- ユーザー フィードバックを追跡して、Firebase Analytics でモデルの精度を測定する
- Firebase Performance Monitoring によるモデル パフォーマンスのプロファイリング
- 複数のデプロイされたモデルのどれを Remote Config を介してロードするかを選択します
- Firebase A/B Testing でさまざまなモデルを試す
必要なもの
- Xcode 11 (またはそれ以上)
- CocoaPods 1.9.1 (またはそれ以降)
このチュートリアルをどのように使用しますか?
Android アプリの構築に関するあなたの経験をどのように評価しますか?
2. Firebase コンソール プロジェクトを作成する
プロジェクトに Firebase を追加する
- Firebase コンソールに移動します。
- [Create New Project]を選択し、プロジェクトに「Firebase ML iOS Codelab」という名前を付けます。
3. サンプル プロジェクトを入手する
コードをダウンロード
サンプル プロジェクトのクローンを作成し、プロジェクト ディレクトリでpod update
を実行することから始めます。
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
git がインストールされていない場合は、GitHub ページから、またはこのリンクをクリックして、サンプル プロジェクトをダウンロードすることもできます。プロジェクトをダウンロードしたら、Xcode で実行し、テキスト分類をいじってみて、どのように機能するかを感じてください。
Firebase をセットアップする
ドキュメントに従って、新しい Firebase プロジェクトを作成します。プロジェクトを取得したら、プロジェクトのGoogleService-Info.plist
ファイルをFirebase コンソールからダウンロードし、Xcode プロジェクトのルートにドラッグします。
Firebase を Podfile に追加し、pod install を実行します。
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
AppDelegate
のdidFinishLaunchingWithOptions
メソッドで、ファイルの先頭にある Firebase をインポートします
import FirebaseCore
そして、Firebase を構成するための呼び出しを追加します。
FirebaseApp.configure()
プロジェクトを再度実行して、アプリが正しく構成され、起動時にクラッシュしないことを確認します。
4. 感情分析モデルをトレーニングする
TensorFlow Lite Model Maker を使用してテキスト分類モデルをトレーニングし、特定のテキストのセンチメントを予測します。
このステップは、Google Colab で開くことができる Python ノートブックとして表示されます。
Colab で開く
このステップを完了すると、TensorFlow Lite 感情分析モデルが作成され、モバイル アプリにデプロイする準備が整います。
5. モデルを Firebase ML にデプロイする
モデルを Firebase ML にデプロイすると、次の 2 つの主な理由で役立ちます。
- アプリのインストール サイズを小さく保ち、必要な場合にのみモデルをダウンロードできます
- モデルは、アプリ全体とは異なるリリース サイクルで定期的に更新できます。
モデルは、コンソールを介してデプロイするか、Firebase Admin SDK を使用してプログラムでデプロイできます。このステップでは、コンソールからデプロイします。
まず、 Firebase コンソールを開き、左側のナビゲーション パネルで [機械学習] をクリックします。初めて開く場合は、[Get Started] をクリックします。次に、[カスタム] に移動し、[モデルの追加] ボタンをクリックします。
プロンプトが表示されたら、モデルにsentiment_analysis
という名前を付け、前の手順で Colab からダウンロードしたファイルをアップロードします。
6. Firebase ML からモデルをダウンロードする
TFLite モデルは比較的大きくなる可能性があるため、Firebase からアプリにリモート モデルをダウンロードするタイミングを選択するのは難しい場合があります。理想的には、アプリの起動時にモデルをすぐにロードすることは避けたいと考えています。モデルが 1 つの機能だけに使用され、ユーザーがその機能をまったく使用しない場合、理由もなく大量のデータをダウンロードしてしまうからです。また、Wi-Fi に接続しているときにのみモデルをフェッチするなどのダウンロード オプションを設定することもできます。ネットワークに接続していなくてもモデルを利用できるようにしたい場合は、バックアップとしてアプリなしでモデルをバンドルすることも重要です。
簡単にするために、デフォルトのバンドル モデルを削除し、アプリの初回起動時に常に Firebase からモデルをダウンロードします。このようにして、感情分析を実行するときに、Firebase から提供されたモデルで推論が実行されていることを確認できます。
ModelLoader.swift
の上部で、Firebase モジュールをインポートします。
import FirebaseCore import FirebaseMLModelDownloader
次に、以下のメソッドを実装します。
static func downloadModel(named name: String, completion: @escaping (CustomModel?, DownloadError?) -> Void) { guard FirebaseApp.app() != nil else { completion(nil, .firebaseNotInitialized) return } guard success == nil && failure == nil else { completion(nil, .downloadInProgress) return } let conditions = ModelDownloadConditions(allowsCellularAccess: false) ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in switch (result) { case .success(let customModel): // Download complete. // The CustomModel object contains the local path of the model file, // which you can use to instantiate a TensorFlow Lite classifier. return completion(customModel, nil) case .failure(let error): // Download was unsuccessful. Notify error message. completion(nil, .downloadFailed(underlyingError: error)) } } }
ViewController.swift
のviewDidLoad
で、 loadModel()
への呼び出しを新しいモデル ダウンロード メソッドに置き換えます。
// Download the model from Firebase print("Fetching model...") ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in guard let customModel = customModel else { if let error = error { print(error) } return } print("Model download complete") // TODO: Initialize an NLClassifier from the downloaded model }
アプリを再実行します。数秒後、リモート モデルが正常にダウンロードされたことを示すログが Xcode に表示されます。テキストを入力してみて、アプリの動作が変わっていないことを確認してください。
7. モデルをアプリに統合する
TensorFlow Lite Task Library を使用すると、わずか数行のコードで TensorFlow Lite モデルをアプリに統合できます。 Firebase からダウンロードした TensorFlow Lite モデルを使用してTFLNLClassifier
インスタンスを初期化します。次に、それを使用してアプリ ユーザーからのテキスト入力を分類し、結果を UI に表示します。
依存関係を追加する
アプリの Podfile に移動し、アプリの依存関係に TensorFlow Lite Task Library (Text) を追加します。 target 'TextClassification'
宣言の下に依存関係を追加してください。
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
pod install
を実行して、新しい依存関係をインストールします。
テキスト分類器を初期化する
次に、タスク ライブラリのNLClassifier
を使用して、Firebase からダウンロードした感情分析モデルを読み込みます。
ViewController.swift
TFLNLClassifier インスタンス変数を宣言しましょう。ファイルの先頭で、新しい依存関係をインポートします。
import TensorFlowLiteTaskText
最後のステップで変更したメソッドの上にある次のコメントを見つけます。
// TODO: Add an TFLNLClassifier property.
TODO を次のコードに置き換えます。
private var classifier: TFLNLClassifier?
Firebase からダウンロードした感情分析モデルでtextClassifier
変数を初期化します。最後のステップで追加した次のコメントを見つけます。
// TODO: Initialize an NLClassifier from the downloaded model
TODO を次のコードに置き換えます。
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
テキストを分類する
classifier
インスタンスが設定されたら、単一のメソッド呼び出しで感情分析を実行できます。
ViewController.swift
classify(text:)
メソッドで、TODO コメントを見つけます。
// TODO: Run sentiment analysis on the input text
コメントを次のコードに置き換えます。
guard let classifier = self.classifier else { return }
// Classify the text
let classifierResults = classifier.classify(text: text)
// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)
8.最終的なアプリを実行する
感情分析モデルをアプリに統合したので、テストしてみましょう。 iOS デバイスを接続し、 [実行] ( ) Xcode ツールバーで。
アプリは、入力した映画レビューの感情を正しく予測できる必要があります。
9. Firebase の機能を追加してアプリを強化する
TFLite モデルをホストするだけでなく、Firebase には、機械学習のユースケースを強化するためのいくつかの機能が用意されています。
- Firebase Performance Monitoring を使用して、ユーザーのデバイスで実行されているモデルの推論速度を測定します。
- ユーザーの反応を測定することで、本番環境でのモデルのパフォーマンスを測定するための Firebase Analytics。
- モデルの複数のバージョンをテストするための Firebase A/B Testing
- 以前に TFLite モデルの 2 つのバージョンをトレーニングしたことを覚えていますか? A/B テストは、本番環境でどのバージョンのパフォーマンスが優れているかを調べる良い方法です。
アプリでこれらの機能を活用する方法について詳しくは、以下の Codelab をご覧ください。
10.おめでとう!
この Codelab では、感情分析 TFLite モデルをトレーニングし、Firebase を使用してモバイルアプリにデプロイする方法を学びました。 TFLite と Firebase の詳細については、他の TFLiteサンプルと Firebase入門ガイドをご覧ください。
カバーした内容
- TensorFlow ライト
- ファイアベース ML
次のステップ
- Firebase Performance Monitoring でモデルの推論速度を測定します。
- Firebase ML Model Management API を使用して、モデルを Colab から Firebase に直接デプロイします。
- ユーザーが予測結果についてフィードバックできるメカニズムを追加し、Firebase Analytics を使用してユーザー フィードバックを追跡します。
- Firebase A/B テストを使用して、Average Word Vector モデルと MobileBERT モデルの A/B テストを行います。