導入 データサイエンティストとして、私は常に、トップテクノロジー企業が私と関係のある分野で新製品を発売し続けることを夢見てきました。 Apple の前回の iPhone X 発表イベントをご覧になった方は、iPhone X に FaceID、アニメーション表現、拡張現実など、機械学習を活用した非常に優れた機能がいくつか搭載されていることに気付くでしょう。私はハッカーなので、そのようなシステムを自分で構築する方法を探ることにしました。 さらに調査を進めていくと、興味深いツールが見つかりました。それは、Apple の開発者向け公式機械学習フレームワーク ツールである CoreML です。 iPhone、Macbook、Apple TV、Apple Watch など、あらゆる Apple デバイスで使用できます。
もうひとつの興味深い発見は、Apple が最新の iPhone にカスタム GPU を設計したほか、機械学習を最適化するためのニューラル エンジンを搭載した A11 高度な Bionic プロセッシング チップも設計したことです。 コアコンポーネントのコンピューティングエンジンがますます強力になるにつれて、iPhone は機械学習の新たな道を切り開き、CoreML は将来ますます重要になるでしょう。 この記事を読めば、Apple CoreML とは何か、そしてなぜそれが勢いを増しているのかが分かるでしょう。また、iPhone 上でスパム SMS 分類アプリを開発することで、CoreML の実装の詳細を探ります。 同時に、CoreML の長所と短所を客観的に評価してこの記事を締めくくります。 記事ディレクトリ:
01. CoreMLとは何ですか? 今年、Apple は毎年開催される世界開発者会議 (Google の I/O カンファレンスに類似) WWDC で CoreML を発表し、大きな話題を呼びました。 CoreML の機能をよりよく理解するには、いくつかの背景を理解する必要があります。 CoreMLの背景 興味深いことに、Apple がモバイル機械学習フレームワークをリリースするのは今回が初めてではありません。昨年、同じフレームワーク ライブラリがいくつかリリースされました。
これら 2 つのフレームワーク ライブラリの違いは、一方が CPU 用に最適化され、もう一方が GPU 用に最適化されていることです。これは、推論中は CPU が GPU よりも高速になることがある一方で、トレーニング中は GPU がほぼ常に高速になるためです。 しかし、パフォーマンスを向上させるために、フレームワークは基盤となるハードウェアに非常に近づくため、これらのハイブリッド フレームワークは開発者にとってわかりにくく、プログラミングが困難になります。 CoreMLの登場 CoreML は、上記の 2 つのライブラリの上に抽象化レイヤーを提供し、同じ効率を実現するためのシンプルなインターフェースも提供します。もう 1 つの利点は、アプリの実行時に CoreML が CPU と GPU 間のコンテキスト切り替えを最大限に活用することです。 つまり、テキスト処理(自然言語処理)などのメモリを大量に消費するタスクの場合は、CoreML が自動的に CPU で実行され、画像認識などの計算負荷の高いタスクの場合は GPU が使用され、アプリに両方の機能が含まれている場合は、両方が最大限に活用されるように自動的に切り替わります。 CoreML は他に何を提供しますか? CoreML にはさらに 3 つのライブラリが付属しています。
上記のライブラリはすべて、いくつかのシンプルなインターフェースで簡単に使用でき、さまざまなタスクを実行するために使用できます。上記のライブラリを使用すると、CoreML の最終的なフレームワーク図は次のようになります。 上記の設計は、iOS アプリケーションに優れたモジュール構造を提供することに注意してください。さまざまなタスクにさまざまなレイヤーを使用し、それらをさまざまな方法で使用できます (たとえば、アプリでの画像分類に NLP を使用するなど)。詳細については、Vision、Foundation、GameplayKit をご覧ください。さて、理論は十分理解できたので、実践に移りましょう。 「WeChatのレイアウト制限により、コードが必要な学生は記事の最後にある元のリンクを調べて自分で見つけることができます。」 02. システムを確立する CoreML を完全に使用するには、次の要件に従う必要があります。 1.OS: MacOS (Sierra 10.12以上) 2.Python 2.7 および pip: クリックして Mac に Python をダウンロードします。ターミナルを開き、次のコードを入力して pip をインストールします。
3.coremltools: このパッケージは、モデルを Python から CoreML が理解できる形式に変換するのに役立ちます。インストールするには、ターミナルに次のコードを入力します。
4.Xcode 9: これは、Apple デバイス上でアプリケーションを構築するためのデフォルトのソフトウェアです。ダウンロードするにはここをクリックしてください。 Xcode をダウンロードする前に、Apple ID でログインする必要があります。 ログイン後、Apple ID を確認する必要があります。 Apple ID が登録されているデバイスにも同じ通知が届きます。 「許可」をクリックし、Web サイトに表示された 6 桁のパスワードを入力します。 この手順を完了すると、ダウンロード オプションが表示されます。そこからXcodeをダウンロードできます。システムがセットアップされたので、準備ができたら実装部分に進みましょう。 03. ケーススタディ: iPhone でのスパム SMS 分類アプリの実装 この開発では、CoreML の機能を 2 つの重要な方法で使用することに重点を置きます。さあ始めましょう! 機械学習モデルをCoreML形式に変換する CoreML の強みの 1 つ、あるいは作成者による賢明な決断の 1 つは、sklearn、caffe、xgboost などの他の一般的なフレームワークでトレーニングされた機械学習モデルの変換をサポートしていることです。 データ サイエンス コミュニティは、お気に入りの環境で実験し、モデルをトレーニングし、iOS/macOS 上のアプリに簡単にインポートして使用できるため、CoreML を試すことに躊躇しないでしょう。 CoreML がすぐにサポートするフレームワークは次のとおりです。 Mlmodel とは何ですか? 変換プロセスを容易にするために、Apple はクロスフレームワーク機械学習モデルを表す独自のオープン形式、つまり mlmodel を設計しました。このモデル ファイルには、モデルの各レイヤー、入力、出力、クラス ラベル、およびデータに対して実行する必要がある前処理の説明が含まれています。学習したパラメータ(重みとバイアス)も含まれます。 変換プロセスは次のとおりです。
この例では、sklearn でスパム分類器をトレーニングし、モデルを CoreML に転送します。 スパムテキストメッセージデータセットについて SMS スパム データセット v.1 は、モバイル スパム テキスト メッセージの調査に使用される、公開 SMS 注釈付きテキスト メッセージ データセットです。これには、正規(不自然なもの)またはスパムとしてマークされた、暗号化されていない実際の英語のテキスト メッセージが 5,574 件含まれています。 データセットはここからダウンロードできます。 基本モデルの構築 基本モデルの構築には、sklearn の LinearSVC を使用します。同時に、SMS テキストの TF-IDF 値をモデル特徴として抽出します。 TF-IDF は、文書を一意に識別する単語に基づいて文書を分類する自然言語処理の手法です。 NLP と tf-idf について詳しく知りたい場合は、この記事をお読みください。コードは次のとおりです。
モデルが構築されたので、スパム メッセージでテストしてみましょう。
興味深いですね。私たちのモデルはかなりうまく機能しています。相互検証を追加してみましょう。
これはどのように作動しますか? まず、coremltools Python ツールキットを使用します。次に、モデルを変換するためのコンバーターを選択します。この例では、変換するモデルが sklearn ツールを使用して構築されているため、 converters.sklearn が使用されます。次に、.convert() 括弧内にモデル オブジェクト、入力変数名、および出力変数名を宣言します。次に、モデルパラメータを設定して入力と出力に関する詳細情報を追加し、最後に .save() を使用して CoreML 形式に変換されたモデルファイルを保存します。 モデル ファイルをダブルクリックすると、Xcode で開きます。 ご覧のとおり、モデル ファイルには、モデルのタイプ、その入力、出力、入力と出力のタイプなどに関する多くの情報が表示されます。上の写真では赤でマークしました。これらの説明を、.mlmodel に変換するときに提供されるものと 1 つずつ比較することができます。 独自のモデルを CoreML にインポートするのはとても簡単です。モデルが Apple エコシステムに組み込まれたので、本当の楽しみが始まります。 注: この手順の完全なコード ファイルはここにあります。 coremltools の詳細についてはここを、提供されているさまざまな種類のコンバーターの詳細についてはここを参照してください。 このモデルをアプリで使用する モデルをトレーニングして CoreML にインポートしたので、それを使用して iPhone スパム分類アプリを開発してみましょう。 シミュレータ上でアプリを実行します。シミュレーターは、実際に iPhone 上で動作するのと同じように、アプリのインターフェースと操作を表示するソフトウェアです。これにより、iPhone でアプリを実行する前にコードをテストしてデバッグできるため、多くの時間を節約できます。最終製品は次のようになります。 プロジェクトをダウンロード 私たちのアプリ用のシンプルな基本 UI を作成し、GitHub に公開しました。次のコマンドでロードして実行します。
これにより、Xcode でプロジェクトが開きます。 Xcode ウィンドウで 3 つの重要な領域を赤で強調表示しました。
アプリを実行して何が起こるか見てみましょう。左上隅の再生ボタンをクリックして、シミュレーターでアプリを実行します。ボックスにテキストを入力して、「予測」ボタンをクリックするだけです。どうしたの? これまでのところ、アプリはボックスに入力されたテキストをそのまま出力するだけです。 トレーニング済みのモデルをアプリに追加する とても簡単です:
モデルをコンパイルする モデルを推論に使用する前に、ビルド フェーズ中に Xcode でモデルをコンパイルする必要があります。具体的な手順は次のとおりです。 プロジェクト ナビゲーション バーで青いアイコンの付いたファイルを選択します。 プロジェクト設定が右側に開きます。 「ソースのコンパイル」をクリックし、「+」アイコンを選択します。 表示される新しいウィンドウで、SpamMessageClassifier.mlmodel ファイルを選択し、「追加」をクリックします。 これで、アプリを実行するたびに、Xcode によって機械学習モデルがコンパイルされ、予測に使用できるようになります。 コードでモデルを作成する Apple デバイス向けに開発されるアプリはすべて Swift でプログラムされています。 Swift を学ぶ必要はありませんが、後でさらに深く学びたい場合は、このチュートリアルに従ってください。 プロジェクトナビゲータで ViewController.swift を選択します。このファイルには、アプリの機能を制御するコードのほとんどが含まれています。 24 行目の predictSpam() 関数が最も多くの作業を実行します。 25 行目を削除し、関数に次のコードを追加します。
上記のコードは、ユーザーがボックスに情報を入力したかどうかを確認します。はいの場合は、tfidf() 関数を呼び出してテキストの tfidf 値を計算します。次に、SpamMessageClassifier オブジェクト インスタンスを作成し、.prediction() 関数を呼び出します。これは、sklearn の .predict() 関数と同じです。そして、予測に基づいて適切な情報を表示します。 しかし、なぜ tfidf() が必要なのでしょうか? モデルはテキストの tf-idf 表現でトレーニングされるため、モデルには同じ形式の入力が必要であることに注意してください。テキスト ボックスに情報を入力したら、tfidf() 関数を呼び出して同じことを行います。このステップのコードを書いてみましょう。次のコードをコピーして、predictSpam() 関数の後に配置します。
上記のコードは、テキスト ボックスに入力された情報の tfidf 表現を取得します。これを行うには、SMSSpamCollection.txt の元のデータベースを読み取り、同じ情報を返します。プロジェクトを保存してシミュレーターを再度実行すると、アプリは正常に実行されるはずです。 4. CoreMLのメリットとデメリット すべての開発ライブラリと同様に、CoreML にも長所と短所があります。はっきりさせておきましょう。 アドバンテージ:
CPU を使用できる為、iOS シミュレータ上で実行できます (iOS シミュレータは GPU をサポートしていません)。 他の主流の機械学習フレームワークからモデルをインポートできるため、多くのモデルが提供されます。
欠点:
結論 この記事では、CoreML について学び、それを iPhone 機械学習アプリの開発に適用しました。 CoreML は新しいライブラリであるため、独自の長所と短所があります。非常に便利な利点は、ローカル デバイス上で実行されるため、高速でデータのプライバシーが保証されることです。しかし同時に、それは包括的ではなく、データ サイエンティストのニーズを十分に考慮していません。今後のバージョンでは改善が期待されます。 途中で行き詰まった場合は、この記事のすべてのコードを GitHub で入手できます。 |
<<: AI(ディープラーニング)の簡単な分析:AIはあなたの仕事を奪うでしょうか?
>>: Weibo ディープラーニング プラットフォームのアーキテクチャと実践
[[272171]]チャットボットとモバイルアプリの戦いは、常に業界で最も議論されているトピックの...
1. 異常なネットワークトラフィックの検出コンピュータネットワークは現代人の生活に欠かせないもので...
近年、自動運転は幅広い注目を集め、熱い議論を呼んでいます。自動運転は自動車産業の将来のトレンドである...
[[437620]]彼らは何百もの自由細胞を集めて、「パックマン」の形をした「口」の中に「次世代」を...
オリンピック数学を勉強したことがない彼に、システム アーキテクトになれるかと誰かが尋ねました。他にも...
インタビューゲスト | アンジー・チュー、ロージー・チャン編集者 | ユン・チャオ海を観察する人は、...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
人力の60倍の速さで作業する送電線検査画像「認識者」、ベテラン並みの監視ビデオ「品質検査員」、さまざ...
最近、マサチューセッツ大学アマースト校のヤン・チョウ博士とそのチームは、「MakeItTalk」と呼...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...