ML の利用で魔法のように生活が変化
Google Cloud Japan Team
※この投稿は米国時間 2021 年 2 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。
機械学習を楽しく学ぶ方法の一つが、個人的なプロジェクトを自ら構築することです。本投稿ではその方法についてご説明します。
その昔、私は自分のウェブサイトを構築しながらコーディングを学ぶことにしました。コンピュータについての知識がまったくなく、サーバーが何なのかさえ知りませんでしたが、学ぶべきテクノロジーの知識がいくらでもあり、それを学びたいという欲求も無限大だと感じていました。夜、横になったまま、自分のウェブサイトの見た目をよくするさまざまな方法(パララックスを使った星のスクロール、無数の Google Fonts)を考え、これから構築したいいろいろな個人プロジェクトについて思いを馳せました。
何年か経ち、私はプロのエンジニアとして自分の陳腐な個人的ウェブサイトよりも、客観的にもっとクールで、洗練された技術的な問題を取り扱うようになりました。とはいえ、コードを学び始めた頃のあの「純真な驚き」は、今ではあまり感じられなくなってしまいました。
技術関係の仕事をされている方ならご存知のように、この職業では一生が勉強です。少し目を離せば、最新技術だと思っていたあらゆるソフトウェアが、いつの間にか完全に置き換わってしまいます(そのソフトウェアが、私が未だに終了方法がわからない Vim なら話は別です)。
コンピュータ サイエンスにおける顕著な例の一つが機械学習(ML)です。私たちのほとんどは、学校でコンピュータ サイエンスを勉強した人も含め、大学で ML について学んだことはなかったと思います。しかし、この技術はまもなく普遍的なものとなり、あらゆる領域でのソフトウェア開発を転換させていきます。私は「機械学習はどこから学べばよいですか?」という質問を他のどの問いよりも受けますが、これは当然のことだと思います。
通常、私は Google の Machine Learning Crash コースや、理論から実践までの基礎を扱った書籍『Hands-On Machine Learning』、Andrew Ng の標準的な Coursera 講座といったリソースをおすすめしています。
ただし、私と同じように実際に構築しながら学ぶ事が好きな方は、ご自身でソフトウェアを作成しながら ML を学ぶことを検討しましょう。個人プロジェクトは、新しい技術を学ぶ楽しい、そして役立つかもしれない方法の一つであるだけでなく、本番環境での機械学習の開発で直面している難題について学ぶうえで、非現実的な宿題の課題よりも優れた方法でもあります。
私がパンデミックの初期に大量の空き時間が突然できてしまった際には、こんな課題を自分自身に与えてみました。「自分の人生の問題を解決する個人プロジェクトを構築すれば、機械学習についてさらに学ぶことは可能なのか?」。それ以来、私は家族の動画をインテリジェントに検索する手法、テニスのサーブの改良、動画の翻訳、新しい焼き菓子のレシピの考案など、ML のさまざまな使い道を実践しました。
以下では、こうしたプロジェクトのまとめと、そのソースコード、チュートリアルの YouTube 動画、詳しい手順を記載したブログ投稿を示しています。新しい手法とツールの紹介や、そうしたものをまとめて役立つアプリに仕上げる方法の説明を通じて、こうしたプロジェクトの構築が楽しく、学習につながると感じていただけましたら幸いです。そしてできることなら、ML によるご自身の努力目標の着想につながることを願っております。何か良いものができあがったら、ぜひとも私に教えてください。それまでは、作ることをお楽しみください。
機械学習を使って作る
作成するもの: チャット プラットフォーム用 bot の Discord。有害、攻撃的、冒とく的、過度な連続投稿のフラグを付けることが可能
学習内容:
テキスト分析のための Perspective API の使い方
チャット アプリケーションでの ML の使い方
白黒のはっきりしない難しい問題に対する機械学習使用の考え方
作成するもの: テニスのサーブとテニスボールの軌跡(またはゴルフのスイングや野球のピッチング)を追跡可能で、このデータを分析して改良のヒントを提示する Jupyter Notebook。Qwiklab をご参照ください。
学習内容:
小規模なデータセットで洗練された ML を行うための裏技
単純な計算でポーズを組み合わせて人体の動きを理解する方法
Video Intelligence API の使い方
AutoML Vision の使い方
別名、言語と Semantic ML を利用したアプリの構築
作成するもの:
ビデオゲームの世界がユーザーのフリーテキスト入力に反応するようにする、シンプルな言語ベースのシステム
学習内容:
すべての NLP で役立つものの一つである Sentence Embedding の使い方
セマンティック テキスト検索の実装方法
テキストのクラスタ化方法
基本的な会話型 bot の実装方法
このすべてを Google Sheet で行う方法
作成するもの: PDF を MP3 オーディオブックに変換するコード
学習内容:
Vision API を使用して PDF からテキストを抽出する方法
Text-to-Speech API を使用して読み上げを行う方法
Math Hacks を使用してドキュメントのレイアウトを解析する方法
作成するもの: 自動的に動画の文字起こし、翻訳、吹き替えを行うことのできるコード。
学習内容:
Speech-to-Text、Translation、Text-to-Speech の組み合わせ方
音声文字変換と翻訳の品質改善方法
Python での動画と音声の取り扱い方法
作成するもの: レシピを分類し、さらには新しいレシピをも作成可能なノーコード機械学習モデル
学習内容:
AutoML Tables を使用して表形式(「スプレッドシート」)データ用のノーコード機械学習モデルを構築する方法
ML 説明可能性機能によって、モデルがそのような意思決定を行う理由を理解する
作成するもの: ポーズ、映像、音に基づく超高速な機械学習モデル
学習内容:
シンプルなニューラル ネットワークの構築(コーディングなし)に必要なものは何か
Teachable Machine を使用してブラウザ内で実行される超高速モデルの構築方法
作成するもの: 自分の洋服ダンスの写真とファッショナブルなソーシャル メディアのインフルエンサーの写真を使用して、服装を推奨するアプリ
学習内容:
Product Search と Vision API の使い方
React と Firebase を使用して ML アプリを設計する方法
-AI 応用エンジニア Dale Markowitz