チャーリージェラルドとポッドキャストエピソード33を壊す:機械学習とは何ですか?
公開: 2022-03-10このエピソードでは、機械学習について話します。 Web開発コンテキスト内でどのようなタスクを実行できますか? 私は専門家のチャーリー・ジェラルドと話をして調べました。
メモを表示
- JavaScriptでの実用的な機械学習:Web開発者向けのTensorFlow.js
- Twitterのチャーリー
- チャーリーの個人サイト
毎週の更新
- 依存性注入の実用的な紹介
ジェイミー・コークヒル脚本の作品 - 広告なしのウェブに向けて:オンライン経済の多様化
フレデリックオブライエンによって書かれました - Webはハードウェア機能を公開する必要がありますか?
NoamRosenthalによって書かれました - 2021年にShopifyアプリを売ってより多くのお金を稼ぐ方法
スザンヌスカッカによって書かれました - FlutterアプリケーションでのGetXパッケージの使用を開始する
KelvinOmereshoneによって書かれました
トランスクリプト
Drew McLellan:彼女は、Netlifyのシニアフロントエンド開発者であり、WebテクノロジーのGoogle Developerエキスパートであり、Mozillaテクノロジースピーカーです。 余暇には、ヒューマンコンピュータインタラクションの分野を探求し、ハードウェア、機械学習、クリエイティブコーディングを使用してインタラクティブなプロトタイプを作成します。 彼女は定期的に会議で話し、ブログの投稿を書いて、学んだことを共有しています。 そして最近では、本「JavaScriptforApressの実用的な機械学習」の著者です。
ドリュー:彼女がフロントエンドの専門家であることはわかっていますが、夢からかぎ針編みした金属やすりを使って刑務所から脱出したことがあります。 私の壊滅的な友人、ようこそ、チャーリー・ジェラルド。 こんにちはチャーリー。 元気ですか?
チャーリー・ジェラルド:私は粉砕しています。
Drew:今日は機械学習についてお話ししたいと思います。これは、主にWeb開発のブラウザー側に焦点を当てたポッドキャストにとっては少し奇妙なトピックのように思えるかもしれません。 私は機械学習を、白衣を着た人々がいる巨大なデータセンターや研究所で起こることだと考える傾向があります。 最近は間違いなく一種の流行語です。 機械学習とは、いったいどういう意味ですか?
チャーリー:一般的に、標準的な定義は、コンピューターが何をすべきかを言われることなく予測を生成する機能を提供することです。 うまくいけば、これは私たちがそれについて話し続けるときに意味がありますが、それは一種の一般的な会話の定義です。 アルゴリズムやモデルに、特定のものを検索するように指示することは実際にはありません。 彼らはあなたがそれを与えるデータを通して学び、それからそれは予測を生成することができます。
ドリュー:それで、特定の状況のために特別にコーディングする必要はなく、ソフトウェアがそれ自体を行う方法を学ぶことができる一般的なケースを作成しますか?
チャーリー:そうだね。
ドリュー:それは少し不気味に聞こえます。 それは、人工知能のようなものの側面にある種の収束です。 これを行うには、筋金入りの数学オタクまたはデータサイエンティストである必要がありますか? それとも、確立されたアルゴリズムや、開始するために呼び出すことができるものなどがありますか?
チャーリー:うん。 幸いなことに、あなたは筋金入りの数学オタクやデータサイエンティストである必要はありません。 そうでなければ、私は間違いなくこれについて話していません。 しかし、すでに理解されているアルゴリズムと、すべてを最初から作成することなくこれらのアルゴリズムを使用できるツールがすでに利用可能です。 したがって、比較としてフロントエンドエコシステムを使用する場合は、ナビゲーターなどのWeb APIを使用して、Webカメラまたはマイクにアクセスしたいときにユーザーメディアを取得できます。
チャーリー:そして、そのAPIが実際に内部でどのように実装されたかを知る必要はありません。 重要なのは、必要に応じて、このAPIが何に適しているかとその使用方法を知っていることです。 その後、お気に入りのブラウザのソースコードを調べて、実際にどのように機能するかを知ることができますが、そもそも実際には役に立ちません。 また、後で独自のアルゴリズムを作成する場合にも役立ちます。 しかし、正直に言うと、これを実行する可能性はほとんどありません。
ドリュー:わかりました。 つまり、CSSを記述してページ上に要素を配置する方法に少し似ています。 ブラウザが実際にそれをどのように行っているかは気にしません。 CSSを作成するだけで、ブラウザがそれを処理します。
チャーリー:うん。 あなたが始めるとき、それはほとんどそのようなものです。
ドリュー:いいね。 それは私のレベルのデータサイエンスのようなものです。
チャーリー:私も。
ドリュー:では、機械学習にどのような問題を投げかけることができますか? どんなことがいいの?
チャーリー:そもそも何をしたいかによります。あるものを作りたいときは、まず学びたい問題の種類を考えて、それがあなたのアルゴリズムを選ぶのに役立つからです。問題を修正したり、解決策を見つけたりするために使用できます。 ですから、一般的に、私が解決しようとしている問題の種類について考えることから始めます。3つの主要な問題があります。 おそらくもう少しあると思いますが、一般的に、私が行うように訓練されたことと私が読んだことについて、言及されている3つの主要なものがあります。
チャーリー:私にこれを教えてもらいたいのなら、教師あり学習、教師なし学習、強化学習があります。 あなたもたくさんの監督を受けていますが、正直なところ、最初の3つのプロジェクトでプロジェクトを構築することができたので、私はそれについてあまりよく知りません。
ドリュー:監視あり、監視なし、強化、あなたは言いましたか?
チャーリー:ええ、強化学習です。
ドリュー:わかりました。 では、教師あり学習とは何ですか? それが何を意味するのか、例を挙げていただけますか?
チャーリー:教師あり学習。データセットが機能とラベルで構成されており、それをアルゴリズムにフィードする場合です。 ですから、ほとんどの人が関係できることを願っている例をとると、それは、あなたが家を持っていて、それを売りたいと思っていて、あなたがあなたの家またはあなたの家を売ろうとしている価格を把握したい場合です。ちなみに、車も同じです。 また、同じ環境または同じタイプの家のデータセットを使用し、市場での価格を知っていると、自分の家の機能を使用できるようになります。 それで、部屋はいくつあり、庭があり、どの近所にありますか? そして、そのようなもの。
チャーリー:これらは機能であり、ラベルは価格になります。すでにあなたの周りにある家のこれらのデータセットをすべて使用すると、家の機能間の相関関係を学習する機械学習アルゴリズムを使用できます。そして市場の価格、それからあなたの家の特徴を得て、それから価格を生み出すことができるようにするために。 したがって、最も重要なことは教師あり学習です。多数の機能とラベルもあるので、実際に2つの間の相関関係を描くことができます。
Drew:この例では、家に関する膨大なデータセットをモデルにフィードします。ここで、家の価格を知ってから、家に関するこれらすべての機能を知っています。 寝室と、平方フィートのようにあなたは何を持っていますか、そして私は場所が考慮されるかもしれない別の種類のものになると思いますか?
チャーリー:うん。 つまり、機械学習の問題の1つは、多くの機能を使用できることと、実際には他の機能ほど効率的ではない機能があることです。 したがって、たとえば、家の色が実際には価格と相関関係がない場合もありますが、多数の機能を指定すると、モデル自体が2つの間の相関関係を検出します。 次に、必要に応じてデータセットを微調整して色を削除するか、庭のサイズなどは重要ではないことに気づきます。
チャーリー:一般的に、データセットをモデルにフィードしたとしても、最初は完全な予測はできません。 通常、あなたはいくつかの異なることを微調整します、そしてあなたは見ます。 かなり正確だと思う予測が得られるまで、微調整します。
ドリュー:そして、そのモデルが作成されたら、またはある都市のデータを使用してモデルを作成したとしたら、それを取得してフィードできますか?別の都市のデータをフィードする必要がありますか? トレーニングが完了したら、それを取得して他の場所で使用できますか、それともそのデータセットに固有ですか、それともどのように機能しますか?
チャーリー:それはデータセットに固有だと思います。 つまり、同じフォーマットで別のデータセットを作成できるということです。 列が異なるExcelスプレッドシートがある場合は、同じラベルと機能を維持できますが、その都市の値に置き換える必要があります。 ただし、一般的には、データセットの収集にも多くの時間がかかる可能性がありますが、たとえば、パリ市で何をしたかをすでに知っていて、データセットの構造は同じである場合は、値を置き換えると、少し速くなり、モデルを再生成できます。
チャーリー:たとえば、パリの住宅の価格がオーストラリアの小都市と異なるためにデータが異なる場合は、同じモデルを再利用しないでください。 したがって、最初はデータセットのコアが完全に同じではなかったため、間違ったデータが必要になることはありません。
Drew:私たちは機械学習を使ったある種のモデルについてたくさん話します。 したがって、このモデルは、データセットのすべての分析の最終結果のようなものです。 そして、それはその後の予測を行うために使用されます。 それがモデルですよね?
チャーリー:はい、まさにその通りです。 これはモデルであるため、これまでに見たことのない新しい入力をフィードする関数に少し似ていますが、トレーニングステップで学習した内容に基づいています。 予測を出力することができます。
ドリュー:教師あり学習なので、機能のラベルからこの予測モデルを作成します。 教師なし学習とは何ですか?
チャーリー:教師なしは同じ概念の少しですが、ラベルを削除します。 したがって、この場合、家を売るという私たちの問題は、実際には教師なし学習の問題ではないと考えることができます。なぜなら、周囲の家の特徴だけを知っていても、ラベルとしての価格がない場合は、価格を実際に予測することはできません。 価格が何であるかさえ知りません。
チャーリー:つまり、データのセットがあり、それに関する機能しかない場合は、教師なしの方が多くなります。 より多くのトレンドや物事のクラスターを一緒に生成できます。 特定の出力が必要な場合、「これの価格はいくらですか?」などの特定の質問がある場合は、教師なし学習を使用しません。 これは、教師なしの使用法としてはあまり適切ではありませんが、エンティティをクラスター化する場合は、人などの可能性があります。
チャーリー:通常、そのユースケースは、Amazonの推奨事項やSpotifyの推奨事項など、「あなたのような人もこれを聞いています」などの推奨事項です。この場合の機能は、その周辺にあります。あなたに関するデータなので、彼らはあなたが何を聞いているか、あなたが通常どの国にいるのか、またはあなたが何かを1日に何回聞いているかを知っていますか? したがって、人々に関するこれらの機能を使用して、同じクラスターまたは同じ種類のリスナー、あるいはAmazonで特定のものを購入する同じ種類の人々にあなたを入れることができます。 そして、そのような教師なし学習を使用して、彼らはあなたに何を宣伝するか、またはあなたのような人々に基づいてあなたが聞くべきであると何を勧めるべきかを知ることができます。 ですから、それはもっとその種の問題です。
ドリュー:わかりました。これは、Web開発者としての私にとって、今でははるかに理にかなっています。これまでに説明したこの種の使用法、住宅の価格設定と推奨事項、広告などの配信は、結局のところ、これらはすべて、私たちが対処しなければならない種類のものであり、サイトや製品に入れたいと思うかもしれない機能、またはあなたが持っているものです。 つまり、予測しようとしている主題に基づいたさまざまなタイプの学習があります。 これを使用できる他の種類のアプリケーションはありますか? これを利用する可能性のある、人々が作成した良い例はありますか?
チャーリー:うん。 たくさんの例があります。 ですから、私が家の価格を予測することについて話すとき、それはあなたに関係するものではないかもしれません。 それほどエキサイティングではないかもしれませんが、実際にはもっとたくさんのことができます。 周りには本当に良い例があります。 私が最初に見たのは、動的に生成された画像のアートテキストの周りだったと思います。 もちろん、サイトに画像を追加するときに自分でできることです。
チャーリー:しかし、実際に大量の画像があるサイトがあり、手動で行う代わりに、各画像を機械学習アルゴリズムにフィードすると、その画像の内容を示すアートテキストが生成されます。おそらく人間の唯一のステップはこれが正しいことを確認することですが、それは本当にあなたがアプリケーションの構築にあなたの時間を集中することを可能にするでしょう。
チャーリー:それでも、画像のアートテキストを使用してウェブサイトにアクセスできるようにしますが、それは一種の機械によって生成されます。 これは私がこれを始めたときに見た例の1つですが、作業コンテンツに対して安全ではないフィルタリングのプロトタイプもあります。 そして、私はそれがChrome拡張機能で実際に非常に良いだろうと思っていました。あなたは、Webページを開くたびに、ページにあるものが一種の安全なコンテンツであることを確認するだけのChrome拡張機能を持つことができます。
チャーリー:たとえば、ラップトップなどを使用している子供がいる場合は、画像を非表示にするか、必要に応じてこれらの画像をパンダに置き換えることができます。 しかし、これは、機械学習を使用して自動的に何かを実行できるようなアプリケーションであるため、特定のタスクについて心配する必要はありません。または、脳力を使用して他のことを実行することもできます。
チャーリー:しかし、ジェスチャ認識の例では、Amazon Alexaや音声認識などと通信していたWebカメラを使用して、さらに高度なものがあります。 そのため、音声やウェブカメラ、機械学習を使用してさまざまなテクノロジーを実際に統合し、認識してさまざまなテクノロジーとやり取りできるようにすることができますが、新しい方法で行うことができます。 とても楽しいです。
Drew:データモデル自体の分析を検討してきたので、それは非常に魅力的です。現在、画像の内容を調べ、機械学習を使用して画像の内容を分析することを考えています。これは非常に興味深いことです。 それはFacebookが持っている機能の一種だと思います。誰かが残酷だとか怪我などを示していると思われる写真を投稿し、それがぼやけてしまったら、クリックするだけで表示できます。 そのようなことは、明らかに、Facebookはアップロードされるすべての画像を見るモデレーターのチームを持つことはできません。
チャーリー:そうしないといいのですが。
ドリュー:それは終わりのない仕事になるでしょう。
チャーリー:それも素晴らしい仕事ではありません。
ドリュー:私は以前、人々が広告を投稿できる無料の広告Webサイトで働いていました。 そして、それには多くの節度があり、Web開発者である私でさえ、「はい、いいえ、はい、いいえ」と言ってこれらすべての画像を見て、ただ通り抜けるだけで関与しなければなりませんでした。
チャーリー:私も少しやりました。 当時、機械学習があったらいいのにと思います。それを行うためのほんの少しのユーティリティツールでしたが、今ではそこにあります。 とてもかっこいいです。
ドリュー:うん、それは本当に素晴らしい。 そして、ウェブカメラからのライブ入力について考え、それをリアルタイムで分析できるので、ジェスチャーベースのインタラクションを実行できるので、非常にエキサイティングです。 それは…
チャーリー:ええ、基本的にはより多くの画像分類を使用します。ウェブカメラでは画像がピクセルのセットであるためですが、特定のジェスチャーを行うと、モデルをトレーニングして右手が上がっていることを認識できます。このようにマウスを制御するか、手と画面の座標を見て、マウスを追跡します。 あなたは本当にあなたがやりたいことを何でもすることができます。 あなたは多分色認識を持っているかもしれません。
チャーリー:あなたは本当に楽しいことをすることができます。 私が作成したプロトタイプの1つで、ある時点でそれをあきらめましたが、少し作成しました…Chrome拡張機能にしたかったのですが、うまくいきませんでした。 Electronを使って小さなデスクトップアプリを作成しました。 また、JavaScriptでは、頭を傾けるだけでWebページを閲覧できました。 ですから、頭を下に傾けると下にスクロールし、上に上がると上に上がることがわかります。 「それをChrome拡張機能に変えることができれば、一部の人にとっては役立つかもしれない」と私が考えていたのは、まさにこの種の小さな実験でした。
チャーリー:コンピューターの前で食事をしているだけで、ニュースを読んでいて、キーボードを汚したくない場合でも、頭を傾けることができますが、アクセシビリティのために、できれば実際に人々が特定のウェブページまたはそのようなものをナビゲートするのを助けます。 利用できるツールはたくさんありますが、それはあなたが自分の周りの状況を観察することを思い付くことができるという考えについてです、そしてあなたは機械学習を使ってこれらの問題のいくつかをどのように解決できますか?
Drew:機械学習では、言語、Pythonについてよく考えます。 それが最初に多くの種類の開発が行われるように思われる場所だと思います。 しかし、Web開発者として、私たちは明らかにJavaScript全般に慣れています。 機械学習は、現実的に期待できることです。 ちょっとした楽しい例が1つあるということですが、実際にはJavaScriptでの実際の作業に役立ちますか?
チャーリー:そうですね、そう思いますが、私がやっていることのほとんどはプロトタイプだということはわかっていますが、それはあなたが仕事をしている状況によると思います。 日常業務で開発者として機械学習を実装する方法はいくつかあります。 しかし、JavaScriptについて私が本当に気に入っているのは、すでにフロントエンド開発者である場合、新しいエコシステムや新しいツールセット、新しい構文、新しい言語を学ぶ必要がないという事実です。 あなたはすでにあなたが毎日働いているあなたの環境にいます。
チャーリー:通常、そのようなことを学ぶときは、自分の時間から始めなければなりません。それが日常の仕事ではなく、みんなの時間が貴重で、それほど多くない場合です。 ですから、いくつかの障壁を取り除き、あなたが知っているのと同じエコシステムにとどまることができれば、それはかなり良いことだと思いますが、始めることもできます…JavaScriptの私にとっての力は、小さなプロトタイプを作成して人々を説得することから始めることができるということです。調査が必要なアイデアがあるかもしれません。JavaScriptで何かをすばやく起動できるようにすることで、アイデアが正しいことを検証できます。
チャーリー:それなら、リーダーシップから賛同を得て、より多くの時間やお金を費やすことができます。あるいは、Pythonで構築したい場合は、Python開発者にそれを与えることができます。 しかし、私にとって、アイデアをすばやく検証するこの機能は非常に重要です。 特に、あなたがスタートアップで働いていて、すべてが速く進み、それを調べる価値があることを示すことができれば、それはかなり重要だと思います。
チャーリー:そして、ツールのエコシステムが本当に大きく、機械学習のフレームワークとアプリケーションがますます増えているという事実もあります。 JavaScriptでは、機械学習を追加できるのはWebページだけではありません。 前に言ったように、Chrome拡張機能とデスクトップアプリはElectronで、モバイルアプリはReact Nativeで、ハードウェアとIoTはJohnny-Fiveのようなフレームワークで構築できます。
チャーリー:つまり、すでに知っている言語を使用すると、実際には、同じ実験を実行できるさまざまなプラットフォームの巨大なエコシステムにアクセスできます。 そして、私にとって、それはかなり驚くべきことだと思います。 ここで、JavaScriptで機械学習を行うことの真の力を理解しています。 そして、それが良くなるにつれて、私たちが毎日構築しているアプリケーションに実際に統合できるかもしれません。
ドリュー: JavaScriptはいたるところにありますね。
チャーリー:はい。
ドリュー:良くも悪くも、それはいたるところにあります。 誰がそれを考えただろうか? これは素晴らしいことのように聞こえますが、大変な作業のようにも思えます。 そして、私はデータセットと物事について考えます、一体どうやってこれらの種類のタスクを始めるのですか?
チャーリー:現時点では、少なくともTensorFlow.JSでは、フレームワークで実行できることが3つあります。 そして、最も単純なものは、既存の事前トレーニング済みモデルをインポートするとします。 いくつかありますが、さまざまなデータセットでトレーニングされたさまざまなモデルがあります。これから始めることをお勧めします。フレームワーク自体を実際に使用する方法の基本と、何ができるかを学ぶことができるからです。これらのモデルで。
チャーリー:つまり、さまざまな画像でトレーニングされた特定の画像認識モデルがあります。 それらのいくつかは、オブジェクト認識に適しています。 それらのいくつかは人々の認識に優れており、使用するモデルを理解することで、そのモデルの制約内で必要なものを自由に構築できます。
チャーリー:でも私には、それが始めるのに良い方法だと思います。 私はまだ多くの実験で事前に訓練されたモデルを使用しています。なぜなら、それもまたあるからです。それがすでにあるのなら、なぜあなたは車輪を再発明するのでしょうか? 与えられたツールを使ってみましょう。 次に、行きたいとき、おそらくさらに一歩進んで、重要なモデルを再トレーニングするときに、いわゆる転移学習を行うことができます。 したがって、事前にトレーニングされたモデルの1つを引き続き使用しますが、その後、独自のサンプルを使用してライブで再トレーニングする機会が与えられます。
チャーリー:たとえば、人が異なる画像分類を使用したい場合は、ジェスチャー分類を実行したいと思うかもしれません。 たとえば、モデルが常に右手か何かを持っている人でトレーニングされている場合、アプリケーションでは左手が必要な場合は、左のサンプルを使用してそのモデルを再トレーニングできます。手、そしてあなたはすでに右手を認識するようにかなり訓練されたモデルを持っているでしょう、しかしそれからあなたはあなた自身のサンプルを追加しそしてあなたがそれを与える新しい入力データの量に応じてブラウザでそれを非常に速く再訓練することができます、少し時間がかかりますが、数秒で、アプリで使用できるこれら2つのジェスチャの認識に非常に優れた再トレーニング済みモデルが得られます。
チャーリー:それは通常、2番目のステップのようなものです。 そして、もう少し複雑な3番目のステップは、ブラウザーですべてを実行する場合です。 したがって、独自のモデルを最初から作成し、それをブラウザーでトレーニングすると、実際にトレーニングして実行し、モデルを生成します。すべてがブラウザーで行われます。 しかし、一般的に、これについて私が見た唯一のアプリケーションは、視覚化の構築です。 トレーニング中のモデルのプロセスとそれにかかるステップ数、所要時間を視覚化したい場合は、選択した機能と調整したパラメーターに応じて、精度が上下するのを確認できます。 。
チャーリー:それで、私が構築したいアプリケーションが見つからなかったので、実際にはそれで遊んでいませんでしたが、事前にトレーニングされたモデルを使用するか、自分のサンプルで再トレーニングするだけの最初の2つのステップは個人的に見たところ。 私はそれを楽しんできました。
ドリュー:通常は、事前にモデルを作成し、オフラインのように作成してから、ブラウザーがそのトレーニング済みモデルを使用するか、少し追加すると、少し再トレーニングが行われますが、一般的に、そのモデルは、ユーザーのブラウザーで使用される前に確立されますか?
チャーリー:一般的にはそうです。 そうすれば、間違いなく独自のモデルを作成できます。 実行する場合は、ブラウザーでトレーニングすることはお勧めしませんが、NodeJSでも実行できます。 ご存知の場合は、NodeJSを少し紹介します。 私は間違いなく独自のモデルを作成しましたが、パフォーマンスが少し高いため、通常はNodeJSで実行します。 次に、作成したモデルをブラウザで使用します。
ドリュー: JavaScriptでこれを行うために利用できるツールは何ですか? TensorFlow JSについておっしゃいましたが、それは何ですか、どこにありますか? それはグーグルからですか?
チャーリー:はい。 最初、GoogleはPythonでTensorFlowツールを使用していましたが、過去数年間、おそらく2、3年、JavaScriptバージョンを作成したので、JSで流れる傾向があります。 しかし、少し抽象化されたML5JSもあります。 したがって、少し混乱している場合、またはTensorFlow JSがドキュメントで使用している語彙の一部で少し怖いように見える場合は、ほとんど同じ機能を備えたML5 JSを使用できますが、APIまたは構文はもう少し初心者に優しい。
チャーリー: ML5から始めて、機械学習が好きかどうか、またはクールなアプリケーションについて考えているかどうかを確認してから、ML5にブロッカーがある場合や、フレームワークに実行したい特定の機能がない場合は、その後、必要に応じてTensorFlowJSに進むことができます。 また、実際に独自のコードを作成することに興味がなく、すでに存在するツールを使用したい場合は、Amazon、Google、MicrosoftのAPIを使用して、画像認識や音声認識も実行できます。 したがって、何ができるかを知りたいが、コードの記述にあまり時間をかけたくない場合は、いくつかのAPIにpingを実行し、それらのツールのいくつかを試すこともできます。
ドリュー:それはとても興味深い。 それで、ブラウザを使ってウェブカメラやマイクなどからの入力をキャッチし、それをアマゾン、マイクロソフト、または誰にでも送信して、彼らに大変な仕事をさせることができるでしょうか?
チャーリー:うん。
ドリュー:そして、あなたは結果から利益を得るだけです。
チャーリー:その通りです。
ドリュー:それは、アイデアを始めるための素晴らしい、魅力的な方法のように聞こえます。 素晴らしいように聞こえますが、これをフロントエンドに適用できる問題は何ですか? いくつかの小さなことについて話しましたが、これを使用する他の方法はありますか?
チャーリー:たくさんの方法があります。 画像分類から始めれば、そうです。 Webまたは携帯電話のWebカメラからの画像を使用できます。 携帯電話でウェブサイトを使用するだけで、写真を撮ったり、オブジェクトを認識したりできます。私が作成した小さなことは、リサイクルに関するものでした。特定のオブジェクトをどのビンに入れるかがわからない場合は、黄色のゴミ箱、緑色のゴミ箱があります。国によって異なります。 色は異なりますが、実際に物を投げる場所がよくわからないことがあるので、このような小さなツールを作成できます。ライブでは、目の前にある2つのオブジェクトを認識して分類し、次のような特定のものを作成できます。これ。
チャーリー:それ以外の場合は、テキスト分類があります。今年の初めに、TensorFlow GSモデルの1つを使用して、GitHubの問題とGitHub PRに書かれたコメントを調べ、分類して次のように言いました。 「ねえ、これを書くべきではなかったかもしれない」または「注意してください、それは少し有毒です」と言う小さなボットがあります。 これを安全な場所にしたいのです。」」そのため、このようなテキスト分類を使用できます。
チャーリー:必要に応じて音の分類があります。Appleが新しい時計OSをリリースしたとき、彼らは流水の音を認識し、人々にCOVIDパンデミックで20秒間手を洗うように指示しましたが、あなたはそれを行うことができます。 JavaScriptでもそうです。 そして、本当に興味深いのは、いくつかのビデオを見ていて、「ああ、JavaScriptでそれを行う方法を知っている」ということでした。
チャーリー:そして私は小さなプロトタイプを作りました。 AppleWatchで動作するかどうかはわかりません。 多分。 持っていませんが、携帯電話とラップトップで動作することはわかっています。 そして、それは他の人々のためにもいくつかのアイデアを始めることができます、そこで私の友人、ラモン・ウイドブロ、Twitterの@hola_soy_milk。 彼は今年、多くのオンライン会議に参加しています。 そして、彼の問題の1つは、誰かを拍手するために拍手するとき、チャットに拍手絵文字を追加する時間がないことです。 そして、彼がやりたかったのは、拍手の音を聞くことです。それにより、チャットで拍手絵文字が自動的に送信されます。
チャーリー:そして、このような小さなことで、もしあなたがたぶんあなたの日常の仕事で本当にもっと役立つアプリケーションが欲しいなら、予測的なプリフェッチの周りにあります。 また、ウェブサイトの分析を確認するフロントエンドで機械学習を使用しています。 それで、どのページが通常その後に見られるか、そしてこのようなもの。 後でアクセスする可能性が最も高いページに基づいて、事前にリソースをプリフェッチできます。 それは私が今年一年中調べたいと思っていたものですが、時間がありませんでしたが、それはあなたがあなたのページのパフォーマンスとUXを本当に改善することを可能にします。 また、必要のないリソースを要求しないので、それは本当に改善できます。これは、機械学習のアプリケーションでもあります。
チャーリー:だから、楽しいことをしたり、もっと便利なことをしたりすることはできますが、間違ったアプリケーションはありません。間違ったアプリケーションがある可能性があります。 私はそれを取り戻しますが、あなたが本当にそれを始めているのであれば、何か楽しいことから始めるのは何も悪いことではないと言っています、そして私はあなたが仕事でできることのいくつかのアイデアをスピンアップすることができます良い。
ドリュー:ここで本当に役立つのは、これらのことが可能であることを知っていることだと思います。 そして実際には、私たちが自分でできる問題を解決するための創造的な方法にすぎません。 従来、ユーザーが送信したコンテンツをモデレートして作成していましたが、かなり原始的であり、基本的には人間に見てもらい、決定を下す必要がありました。 しかし、機械学習へのアクセスがあれば、その例では、それをさらに引き継いで、たとえば、説得力のある一致がなかったものなど、エッジケースを人間に見てもらうことができます。
ドリュー:もちろんそうなるでしょう。それを開発して適切な場所に配置するには少し時間がかかりますが、人間が手動でチェックする必要がないことの節約について考えます。 技術が進歩するにつれて、これが将来どのように使われるのを見ることができますか?
チャーリー:私にとって、おそらく将来的には、モデルの読み込みが小さくなり、パフォーマンスが向上し、トレーニング対象のデータセットが改善されると思います。 もっと役立つツールが見られるようになりたいです。 つまり、個人的には、マイクロコントローラーで実行して何かを構築できる小さな機械学習モデルに興味があります。 しかし、フロントエンドの世界にとどまるのであれば、トラックパッドやキーボードを使ってウェブをナビゲートすることに慣れているように感じるので、おそらくより良い音声認識を望んでいますが、現時点ではまだあります音声認識ですが、必ずしも非常に正確であるとは限りません。たとえば、アクセントを使用すると正確ではありません。 そして、私たちがより良いモデルを開発するとき、それがパフォーマンスにそれほど悪影響を与えないので、小さな人々がそれを彼らのウェブサイトに追加することをそれほど恐れないことを望んでいます。
チャーリー:予測プリフェッチなどで機械学習を使用して、スペクトルのエクスペリエンスを向上させるよりスマートなウェブサイトを構築できるようにすることに興味があります。ユーザーにとっては、ページの読み込みが速くなり、パフォーマンス全般が向上するためです。あなたのサイトの、それはより良いです。 しかし、持続可能性について考える場合、無駄なリソースを要求しないことも、Webサイトの二酸化炭素排出量に役立つとしましょう。 しかし、機械学習モデルの二酸化炭素排出量もあります。 それはあまり良くありません。 だから多分これについて話さないようにしましょう。 将来的には、よりパフォーマンスの高い、またはより小さなモデルを用意して、人々が試してみる可能性が高くなることを望んでいます。これは、人々がこれに参加するためのブロッカーが少なくなるとしましょう。 、しかし見てみましょう。
ドリュー:機械学習プロジェクトに着手する前に知っておくべき既知の制限や制約はありますか?
チャーリー:うん。 がある。 JavaScriptでやっているかPythonでやっているかに関係なく、限界があると思います。 非常に習慣化された、事前にトレーニングされたモデルがないものを構築したい場合、制限の1つは、かなりの量のデータが必要になる可能性があり、すべての人がそれを持っているわけではないということです。 So if you're doing something on your own as a side project, and you can't find the data set, it would actually take you quite a long time to get one that would allow you to generate good predictions. You can build a small data set, but you will not be able to push it to production or something if you don't actually have a data set that's consistent enough. So I think the amount of data that you need, training the models can take a lot of time.
Charlie: That depends on the amount of data that you feed it, but depending on the application that you want to will build it with, you have to be aware that it can take a lot of time. I remember when I got started and I was doing it in Python and I wanted to… I forgot what I wanted to do, but my model was running for, it was training for eight hours. And at the end it told me that it failed because of something. And I was like, “You're telling me that at the end, after eight hours,” so it can be a bit frustrating and it can still be experimental and you have to be comfortable with it not being a pure science, not everything is always accurate.
Charlie: At the moment, as some of the models are still, they can be a few megabytes, if you are building something that you know, is most likely going to be seen on a mobile screen, you might want to take into consideration that, well, you don't want to load all that data over 4G network. You might want to warn people that they should be on Wi-Fi or the battery use, or the type of phones can't really handle all of this as well. And then more seriously in terms of liability, you do have to understand why your model predicted certain things. And that can be difficult because the model is a black box. It's a function that you don't really know what's inside. You know what it predicted and based on what you're building, if it makes certain decisions about, I don't know, who gets a loan or who goes to prison, based on whatever, you want to be able to explain how you got to that decision.
Charlie: If you decided to use machine learning to kind of abstract some of the work, so it wouldn't be done by people. That can be quite dangerous, so you have to know what you're doing, and in the end, just remember that it's not perfect. I think people sometimes assume that because we talk about artificial intelligence is just as smart as people, but no, it's still computers. It's still data that is given to them and they make up some predictions and somehow we just trust it, which is scary. But yeah, that's some of the limitations.
ドリュー:はい。 I guess it may seem like it's intelligent, but it is still artificial. There've been some quite high profile cases in recent times particularly around some of the machine learning stuff with image recognition that have raised issues of bias in machine learning, for example, a model only detecting humans if they have light skin. Are there ethical considerations that we should be making here?
Charlie: To me, that sounds like a really interesting side of machine learning. And that's also why, before I was saying that, remember that it's not perfect. Sometimes I feel like people think that the machine just happens to be right and know all the things by itself, but it's still something that we program. And when an algorithm products or generates a biased result, the algorithm just generated things based on the data that it was given before. So an algorithm itself or a model is not going to know the difference in society between light-skinned people or dark-skinned people. It doesn't know and it doesn't care. The only thing that it knows is that I got given pictures of certain people and I'm just going to generate based on what I know.
Charlie: And the data set that is given to the algorithm is in general generated by us, by people. Maybe it's not the developer using the model, but at some point somebody put together a data set. And I think it's important to remember that we are responsible for making sure that the predictions generated are as fair as possible and as unbiased as possible. And that creates interesting questions then, because then you can go into, “Well, what is fair for people?” or if we think about my example of the GitHub action that I created to look at toxic comments, well, maybe what I think is toxic is not the same thing as what other people think is toxic.
Charlie: It's interesting. There's a really interesting collection of videos by MIT media lab around the ethics and governance of artificial intelligence, and I find that fascinating because it's not about telling people, “Oh, you're a bad person because you used in algorithm that's biased,” or, “You're a bad person because you produced a model that's biased.” Its more about raising certain questions and helping you realize, “Well, actually, maybe I could be better,” because that surface that, “Yes, I forgot to add diverse people to my data set. Let me fix that.” It's not really about say, “Let's not use that model ever again.” Just retrain it. Realize that, “Oh, I forgot this. I can retrain it and we can make it better.” And that's something that I definitely think is interesting.
Charlie: And you have companies really trying to improve on that. When the issue of Google who was translating certain neutral languages into gendered languages, and all of a sudden engineer was male and cook was female. Now they know they've really reworked on that and it's a lot more unbiased and they use the 'they' pronoun as well. They also really try to make it better, but then you have also weird stuff where I think IBM had created a data set called Diversity in Faces, that was supposed to be one of the very few that I said that actually had a diverse spectrum of people. But when I tried to find it to use it, it's not available anymore. So I'm like, “Oh, you had this good initiative. You try to do better than a lot of other people, and now people are going to actually use it.” I don't know, but I think the question is really fascinating because he can really help us improve. And then we improve the tool as well that we're using.
Drew: I guess it pays just to be really careful to be balanced and be diverse when selecting data for training models. I guess that's what it comes down to, isn't it?
Charlie: Yeah. Well, I mean, you're building a tool for the public, in general, right? If it's a tool that everybody can use, so it should reflect everybody really, or you should be really clear and say, “This tool can only be used by these people because the model was trained that way, but it's not really what we should do.” I understand that sometimes it if you've never thought about it, it can be I don't know, you can see it as a burden. I hate that people would think of it that way, but it's also, if you spent all this time, maybe writing your own algorithm or generating your own model and doing all of this work, you can't tell me that finding a diverse data set is the hardest part. I don't think it would be. So I'm hopeful, and I think as more people raise concerns about this, and I think people are watching this space, which is really good because if companies don't do it, they'll do it if we tell them that it's not right. And if you want the adoption of machine learning models, you have to make sure that everybody can use them.
Drew: Of the various tools that are available for doing machine learning in JavaScript, you've worked a lot with TensorFlow JS and you've written a book about it. Tell us about your book.
Charlie: Yes, I did. I did write a book this year about TensorFlow JS. So to help JavaScript developers learn more about machine learning and understand it better. And I think the main goal of this book was to help people dive into machine learning, but making it less scary, because I know that at first I thought about machine learning as this big thing, completely different from the web development that I would never understand anything about. I didn't think that I would have to write my own algorithms and really understand math. And as I've dived into this over the past two and a half years, I realized that it's not really like that. And I was hoping that writing this book could help people realize as well that they can do it and what can be done.
Charlie: And there's also a few projects that you can really put in practice what you're learning, but it was really aimed at people who haven't really looked into ML yet, or who just are curious to learn more. I'm not really diving into the algorithms like the source code of the algorithms, but it's really more telling people, trying to understand what an algorithm does and which one to use and for what. A bit of what we just talked about, but it's explaining contents in a clear way, so hopefully it's less scary and people want to hopefully dive a bit more into it.
Drew: So it's called Practical Machine Learning In JavaScript and is available from Apress, and we'll link it up in the show notes. So I've been learning all about machine learning today. What have you been learning about lately, Charlie?
Charlie: Let's say a thing that I'm diving into that is related to machine learning or I will use machine learning with it, but it's digital signal processing that I want to use with machine learning. As we've talked about the fact that machine learning needs a lot of data, if you want to build your own models, sometimes you have to filter your data to actually get the right prediction. And if we think about it, let's think about noise canceling headphones. In your day-to-day life, you have a lot of noise around you. Let's say you're trying to watch a video on the train and there's people talking around you, and there's a sound of the train. And what you want to focus on is the sound of the video.
Charlie: With digital signal processing, that would be a little bit like your noise canceling headphones, where there's some noise around that you don't care about. So there's some data that you don't want to listen to, and the noise canceling headphones allow you to focus on the sound coming from the video on your phone, so that you can really truly listen and focus on that. What I'm doing with digital signal processing is that I have a bunch of data from a piece of hardware, like an Arduino, but I know that there's a lot of it that I might not care about. I want to filter out the things that I don't care about, so that then I can feed that to a model and get better predictions about gestures or things like that. So you have your data signal that you can either transform or filter.
Charlie: It's like when you use the web API to get sound from your microphone, you can either see the arrays of numbers on your dev tools, or you can transform it into a spectrogram to see the picture of the sound. And that's a little bit of that. To have a better prediction for gestures based on hardware data, I can transform that signal. I've been wanting to do this for a couple of years, but it's something that I know nothing about. It takes time to learn, but now that I know a bit more about the machine learning side, I can learn the digital processing side and I'm getting there. I like this moment where I'm like, “Oh, I start to get it because I spent all this time on it.” And yeah, that's, that's really interesting. I'm going to have you going a bit.
Drew: Charlie you're such a nerd. If you dear listener would like to hear more from Charlie, you can find her on Twitter, where she's @devdevcharlie and her personal website includes links to lots of our experiments and projects, and it's really worth checking out at charliegerard.dev. Her book Practical Machine Learning In JavaScript is available now, and we'll link to that in the show notes. Thanks for joining us today. Charlie, did you have any parting words?
チャーリー:楽しんでください。 今日は楽しいこと、そして実用的なことについてたくさん話しましたが、これを調べたいのであれば、何を作ろうとも、楽しんでください。