AWS 機械学習サービスまとめ 2018年版

AWS運用自動化サービス「Cloud Automator」

こんにちは、PS課のミネです。

昨年のre:invent 2017ではSageMakerが発表され、今年のre:invent 2018でもAmazon PersonalizeやAmazon Forecastなどが発表されました。AWSの機械学習サービスもかなり充実してきたのではないでしょうか。

今回はそれぞれのサービスの概要とユーズケースをまとめたいと思います。

何があるか

そもそもAWSの機械学習サービスに分類されるサービスには何があるのでしょうか。だいたい以下ののものが機械学習サービスとなるかと思います。

  • Amazon Machine Learning
  • Amazon SageMaker
  • Amazon Rekognition
  • Amazon Lex
  • Amazon Polly
  • Amazon Comprehend
  • Amazon Transcribe
  • Amazon Translate
  • Amazon Textract (New!)
  • Amazon Personalize (New!)
  • Amazon Forecast (New!)
  • AWS DeepLens
  • AWS DeepRacer (New!)

もちろん上記はAWSから提供されている機械学習サービスなので、ユーザー側でEC2やECS、S3などのその他のサービスを組み合わせ、モデルのトレーニング/デプロイを行うこともあるかと思います。

一口に機械学習サービスといっても…

一口に機械学習サービスといっても、その利用方法ははさまざまです。AWSの機械学習サービスは、ざっくり以下のように分けられると考えています。

  1. ユーザーからのINPUTから予測のみ行うサービス(Transcribe, Pollyなど)
  2. ユーザーは学習データのみ用意し、サービス側でモデルをトレーニングするサービス(Comprehend, Machine Learningなど)
  3. インフラを気にせずにユーザーがモデルのトレーニング/評価/デプロイを行えるサービス(SageMaker)

1・2は機械学習の知識がなくて利用できる系のサービスです。3はインフラの管理が減り、データサイエンティストや機械学習エンジニアがより本業に集中できる、もしくはプロジェクトに関わるインフラエンジニアの負担が減るというようなサービスです。それでは各サービスについてみていきましょう。

Amazon Machine Learning

機械学習のことをよく知らなくても機械学習ができる系のサービスです。使えるモデルは線形回帰、ロジスティック回帰、多項ロジスティック回帰の3つ。この3つのモデルの具体的な計算はわからなくとも、使い分けさえ分かっていれば利用できます。ユーザーはCSVでデータを用意するだけでモデルをトレーニング/評価/デプロイし予測ができます。

参考

Amazon Machine Learning (SlideShare)
Amazon Machne Learningドキュメント

Amazon SageMaker

最近はやりのSageMakerは、どちらかというとデータサイエンティスト・機械学習エンジニア向けのサービスです。SageMakerの利点はインフラの管理が少ないことにあります。小さいインスタンスタイプのノートブックインスタンスでコードを書き、トレーニングは大きなインスタンスタイプで、モデルをAPIとしてデプロイするのもAPIサーバーの構築などを考えることなく簡単です。「インフラの管理めんどくさいよ~」ていうデータサイエンティスト・機械学習エンジニアにおすすめのサービスです。独自のアルゴリズムを利用することも可能ですが、SageMaker組み込みのアルゴリズムがすぐに利用できるのでおススメです。ただし、学習時にリアルタイムなデータがほしい場合には向かないので注意しましょう。

参考

Amazon SageMaker (SlideShare)
Amazon SageMakerドキュメント

Amazon Rekognition

ユーザーが画像や動画を用意するだけで、画像や動画から顔/テキストの検出、安全でないコンテンツなどの検出が出来るサービスです。動画を扱うサービスは特にAmazon Rekognition Videoと呼ばれます。Amazon Rekognition VideoはKinesis Video Streamsと組み合わせてストリーミングビデオからの検出も可能です。

参考

Amazon Rekognitionドキュメント

Amazon Lex

テキストもしくは音声を利用する会話型のインターフェイスを簡単に構築することができます。いわゆる「チャットボット」が簡単に構築できるというサービスになっています。Lambdaと連携することも可能で、Lambda経由で他のAWSサービスと連携することもできます。Webサービスやチャットアプリに組み込むことはもちろんですが、Amazon Connectに統合することも可能です。

参考

Amazon Lexドキュメント
Amazon Connect と Amazon Lex のインテグレーション

Amazon Polly

テキストを音声に変換するサービスです。音声の速度や発音を調整することも可能です。

参考

Amazon Pollyドキュメント

Amazon Comprehend

Amazon Comprehendは自然言語処理のサービスです。ユーザーは分析したいテキストを用意し、エンティティ分析/キーフレーズ分析/言語の分析(何語か?を分析)/感情分析/構文分析を行うことができます。分析の仕方もいくつかあり、アプリケーションに組み込み単一のテキストを分析することも、S3へためたテキストをいっぺんに分析することもできます。Comprehend Customという機能もあり、こちらはユーザー側で学習データを用意する必要があります。しかし機械学習の知識がなくとも、Comprehendへそのデータを学習させ、ユーザー側でモデルを「カスタム」することができます。Comprehend Customは現在、ドキュメントの分類とエンティティ分析で利用可能です。

参考

Amazon Comprehendドキュメント(英語)

Amazon Transcribe

文字起こしサービスです。単に音声を文字へ起こすだけでなく、設定した人数でもしくは音声のチャンネルで話者の識別も可能です。また、例えば会議などの文字起こしに利用するとなると専門用語を正確に文字起こしする必要がありますが、カスタム語彙を設定してやることでより正確に文字起こしすることができます。

参考

Amazon Transcribeドキュメント

Amazon Textract (New!)

今年のre:inventで発表された新サービスの1つです。書類からテキストの抽出/分析が行えます。テキストだけでなく、表も抽出できます。

参考

Amazon Textractドキュメント(英語)

Amazon Personalize (New!)

パーソナライゼーションとレコメンデーションを誰でも容易にできるサービスです。利用の流れははデータセット用スキ―マを用意、データセットを準備、アルゴリズムの選択・学習、モデルのデプロイという感じです。Personalizeではアルゴリズムはレシピと呼ばれ、事前に定義されたレシピはもちろん、独自のアルゴリズムをレシピとして追加することも可能です。AutoMLを有効にすると差的なレシピが自動で選択されます。

参考

Amazon Personalizeドキュメント(英語)

Amazon Forecast (New!)

時系列予測のサービスになります。時間に依存したデータの予測を行うことができます。こちらもデータセットを用意し、レシピ(アルゴリズム)を選択、モデルのデプロイ(プレディクターの作成)という流れで利用します。独自のレシピは使えなさそう…?

参考

Amazon Forecastドキュメント(英語)

  • AWS DeepLens
  • AWS Deeplensは専用のカメラと専用の開発プラットフォームです。サンプルプロジェクトも用意されており、事前に学習したモデルを使って、初心者が深層学習による画像認識を学ぶこともできます。もちろん自身でモデルをトレーニングし、専用カメラにデプロイすることもできます。

    参考

    AWS Deeplensドキュメント(英語)
    AWS DeepLens

    AWS DeepRacer (New!)

    今年のre:invenで発表されたAWS DeepRacerですが、あのミニカーが印象的でした。AWS DeepRacerは強化学習を用いて、ミニカー自律走行させることができます。コンソールではモデルの学習・チューニングだけでなく、走行のシミュレーションもできるため大変便利です。DeepRacerを使った大会も開催されているようです。

    参考

    AWS DeepRacerドキュメント(英語)
    AWS DeepRacer League
    DeepRacer

    まとめ

    いかがでしょうか。TranscribeやTranslateのようにユーザーがすぐに利用できるものもたくさんあります、Machine Learningのようにユーザーはデータを用意するだけでも使えるサービスもありますが、モデルに対して理解しておけばよりよく使いこなせると思います。PersonalizeやForecastのレシピについてもそれぞれ理解しておく必要がありそうです。SageMakerはユーザーインフラを気にせずに利用できるので、ゴニョゴニョしてモデルをデプロイする必要がある場合は、SageMakerで実現できるか検討してもいいかもしれません。冒頭にも述べましたが、EC2やECSなどを活用すして、モデルのトレーニング/デプロイを行うこともできます。機械学習サービスで間に合うのであれば、どんどん使っていきましょう。

    AWS運用自動化サービス「Cloud Automator」