【AWS】今年度学習したAWSサービスの特徴をまとめておく - AWS Machine Learning編

概要

インフラ系のクラウドエンジニアとして、日々自己研鑽に努めています。 本投稿は今年度の学習のまとめとして、今後も覚えておきたい情報を記載したものです。 Machine Learningに含まれるサービスの特徴と効果的に活用するためのTipsを記載しています。また、サービスを利用するときに必要となる一般的な機械学習に関するナレッジも用語集的に整理しています。

記載内容は、AWS公式ドキュメントやインターネットから拾い集めた情報を個人的に解釈した結果を記載しています。実機確認等による裏付けがされた内容ではない点、ご留意ください。また、私は機械学習エンジニアではないため、特に"一般的な機械学習に関するナレッジ"はおおよそのイメージで記載しており、正確性に欠ける記載が多いかもしれません。あらかじめご了承ください。

AI services

Forecast

Lex

  • チャットボット

Personalize

Polly

  • テキストの読み上げサービス。以下の機能を有する。
    • NTTS:より人間に近い音声で発話
    • スピーチマーク:テキストからメタデータを取得。読み上げた単語のハイライトやアニメーションの口の動きなどに使えるらしい。
    • SSML:ボリュームと話す速度の調整
    • Lexicon:発話(utterance)のカスタマイズ

Rekognition

  • 画像分析及び動画分析を行うサービス。
  • 動画分析では、S3に保存された動画の他、ストリーミングビデオの操作も可能。
    ストリーミングビデオの処理:S3やKDSからビデオを取り込み、ストリームプロセッサーで処理。ストリーミングが完了するまでループ。 ストリーミングビデオの操作 - Amazon Rekognition

Transcribe

  • リアルタイム文字起こし。

Panorama

  • オンプレミスのカメラからリアルタイムで動画処理するサービス。

ML services

Augmented AI

人間による機械学習予測結果のレビューを行うサービス。

SageMaker

Othres

Elastic Inference

Amazon Elastic Inference (Amazon EI) は、Amazon EC2 または Amazon SageMaker のインスタンスタイプまたは Amazon ECS タスクに適切な量の GPU による推論アクセラレーションをアタッチさせる、高速コンピューティングサービスです。つまり、アプリケーションの全体的なコンピューティング、メモリ、およびストレージのニーズに最も適したインスタンスタイプを選択し、必要な推論アクセラレーションの程度を個別に構成できます。
引用:よくある質問 - Amazon Elastic Inference | AWS

Kinesis Video Streams

  • 2種類の方式がある。
    • メディア方式:プロデューサーからストリーミングにより動画を取得し、保存して分析に使用する。データストアには 内部的に S3が使用される。
    • WebRTC:リアルタイムで双方向にデータをストリーミング。クラウドに動画が保存されない。その場限りの動画配信に使う。

IoT Greengrass

Data Pipeline

  • S3,RDS,DynamoDB,EMR,Redshiftへのデータ転送やETL処理を行う。
  • オンプレミスからのデータ転送や定期的なデータアクセス機能も備える。
  • オンプレミス→S3→Redshiftといった一連のデータパイプラインの作成も可能。

DeepLens

  • 深層学習用のカメラで、ローカルで推論の実行が可能。
  • Lambdaがカメラ内に配備されている。Kinesis Video Streamsへの転送も可能。

QuickSight

  • マネージドなBIサービス
  • auto-narrativeという機能を使うと、説明文が自動生成可能。

    [auto-narrative (自動説明文)] は、チャートの代わりに説明文を表示する自然言語の要約ウィジェットです。分析中にこれらのウィジェットを埋め込んで、重要なインサイト吹き出しを強調表示することができます。結論を引き出すために、ビジュアルを調べたり、ドリルダウンしたり、値を比較したり、アイデアを再確認したりする必要はありません。また、データの意味を理解したり、さまざまな解釈について同僚と話し合ったりする必要もありません。代わりに、データから結論を推定し、それを分析に表示することができます。1 つの解釈は誰でも共有することができます。
    引用:Amazon QuickSight を使用した自動説明文の作成 - Amazon QuickSight

一般的な機械学習に関するナレッジ

データの前処理

Standardization(標準化)

  • 平均0、分散1になるようにデータの値を調整。
  • データの持つ値の大きさが異なる際に、元々の値の大きさの違いにより結果に偏りが起きないようにするために行う。 例えば、身長と体重をそのままの数値で使用したり、100点満点の試験と1000点満点の試験の値をそのまま扱うと、身長や1000点満点の試験結果など元々大きな値を持つデータに引きずられてしまう。そういった場合に使用する。
  • その他、外れ値がある場合にも利用する。

Normalization(正規化)

  • 0~1の間になるようにデータの値を調整。
  • データの持つ値の大きさが異なる際に、元々の値の大きさの違いにより結果に偏りが起きないようにするために行う。 例えば、身長と体重をそのままの数値で使用したり、100点満点の試験と1000点満点の試験の値をそのまま扱うと、身長や1000点満点の試験結果など元々大きな値を持つデータに引きずられてしまう。そういった場合に使用する
  • 外れ値がある場合は適さない場合がある。例えば、100個の値のうち99個は1~10の間だが、1つだけ100といったケースで0~1に正規化すると、外れ値が大きな影響力を持ってしまう。

欠損値への対処

  • 他の値から導き出される適切な値(機械学習結果等)で埋める。ランダムな値で埋めるのはバットプラクティス。
  • Multiple imputation by chained equation(MICE)(多重代入法):欠損データに単一代入法を繰り返し、得られた結果を統合。

Box and whisker plot(箱ひげ図)

データの分布を視覚化したもの。外れ値の検出にも使用する。

Data Augmentation(データ拡張)

データが不足している場合に、拡張する手法。画像データの場合、反転させる、すらす、ノイズを加えるといったことを行うことでデータを増やす。

Polynomial

数値データを多項式で変換し、新たな特徴を生成する。

Binning(ビニング)

特徴が分かりにくい連続データを区切って特徴量を明確化。例:人に紐づくデータを、大学生や小学生といった単位で区切る等。

Logarithmic transformation(対数変換)

データの分布が偏っている場合に使うと、疑似的に正規分布に近づける事ができる。

ワンホットエンコーディング

状態を合わすためにデータを0または1に変換する。
例:
月火水木金土日をそれぞれ月=1, 火=2,・・・日=7と数値に変換すると、数値の大きさが学習結果に影響する。そのため、カラムをすべて分けて下記のように表現するのがワンホットエンコーディング

レコード ・・・
レコード1 1 0 ・・・ 0
レコード2 0 1 ・・・ 0
レコードn 0 0 ・・・ 1

Classification(分類)

教師あり。犬か?猫か?などそのデータが示すクラスを予測する。

Binary classification(二項分類)

これは犬?犬ではない?やコインの裏表などの二者択一の分類

Confusion Matrix(混同行列)

Binary classification(二項分類)の評価指標。予測と実際の数を以下の表でまとめたもの。
例:犬と予測し実際に犬だった場合はTP(真陽性),犬ではないと予測し実際に犬だった場合はFN(偽陰性)にカウントする。

↓予測 実際→ True False
Positive True Positive(真陽性) False Positive(偽陽性)
Negative False Negative(偽陰性) True Negative(真陰性)

上述の表を以下の評価指標で評価することで、機械学習モデルの精度を評価する。 例えば、Precisionは高いがRecallは低いという場合、陽性と予測したもののほとんどが陽性だったという点では高い精度を示したとみなせるが、多くの陽性を見逃したという点では精度が低いとみなせる。こういったケースでは真とみなす閾値(クラス確率の閾値)を調整し、より積極的に陽性と判定するように(例えばより積極的に犬と判定するように)モデルをチューニングする。もちろんTP,FP,FN,TNのうちどれを高めたいかはユースケース次第である。

評価指標 概要
Precision(適合率) この値が高いほど、陽性と予測したもののうち、高い割合で実際に陽性だったことを示す。 TP/(TP + FP)
Recall(再現率) この値が高いほど、実際に陽性だったもののうち、高い割合で陽性と予測できた事を示す。 TP/(TP + FN)
Accuracy(正確度 ) この値が高いほど予測通りだったことを示すが、TPとTNのどちらかがより予測通りだったかどうかは評価できない。 (TP + TN)/(TP + FP + FN + TN)
F-measure(F値) モデルの全体的なバランスを評価 (2 × precision × recall)/(precision + recall)
ROC曲線,AUC 真陽性率を縦軸に、偽陽性率を横軸にROC曲線とAUC(面積)で表現したもの。AUCが広いほど精度が高い。 -

Cross entropy error(交差エントロピー誤差)

分類問題で使用される予測と実測値との誤差。

Regression(回帰)

教師あり。株価などの連続値を予測する。

Linear regression(線形回帰)

機械学習の結果が概ね線形の形になった状態。売上予測や販売数予測等で、いくらになるか?何個になるか?といった具体的な数値を予測する。

Logistic regression(ロジスティック回帰)

発生確率を予測。ある事象が発生するか否かを0~1の数字で表現。

残差プロット

回帰の結果と実際のデータとの差(残差)を散布図で表現したもの。散布図で残差0を軸としたばらつきを確認し、ばらつきが均等ではなく何らかの偏りや傾向がある場合、モデルは何らかの改善の余地があると解釈できる。残渣プロットの結果が良好であれば、RMSEなどを用いてモデルの精度を評価する。

Mean Absolute Error(MAE)(平均絶対誤差)

回帰モデルの評価指標。誤差の絶対値。

Mean Squared Error(MSE)(平均二乗誤差)

回帰モデルの評価指標。

Root Mean Squared Error(RMSE)(二乗平均平方根誤差)

回帰モデルの評価指標。MSEの平方根。0に近いほど精度が高い。

トピックモデル

教師なし。文章の中のトピックを分析。政治、経済、スポーツ、音楽、などのトピックを類推する。

Latent Dirichlet Allocation(LDA)(潜在的ディリクレ配分法)

教師なし。単語や文書を低次元ベクトルで表現。文書や単語の分類、類似文書の検索に利用。

Neural Topic Model(NTM)。

教師なし。文書中のトピックを生成する。

ニューラルネットワーク

  • 教師あり、教師なしどちらの学習にも用いられる。
  • ニューラルネットの学習でバッチサイズが大きいと個々のデータの特徴が失われ、局所解にトラップされやすい。その場合バッチサイズを小さくする。
  • ニューラルネットワークは複雑であるため、過学習が発生しやすい。

Perceptron(パーセプトロン)

教師あり。2層のニューラルネットワーク。分類やパターン認識などに利用する。線形分離可能なものにしか使えない。

Multilayer perceptron(MLP)

教師あり。多層のパーセプトロン

Deep Neural Network(DNN)(深層学習)(ディープラーニング)

教師あり/教師なし/強化学習のいずれも対応可能。4層以上のニューラルネットワーク

Recurrent neural network(RNN)(再起型ニューラルネットワーク)

教師あり。数値の時系列データを認識する。

Long Short-Term Memory(LSTM)

教師あり。RNNを拡張したもの。ニューラルネット内で短期記憶を長期間活用できる。
回帰・分類両方の予測に利用可能。言語や文章理解に使用する。感情分析や音声・動画などにも応用可能。 word2vecと組み合わせ、word2vecで単語をベクトル化し、それをインプットにLSTMで学習するといった手法も用いられる。

Convolutional Neural Network(CNN)

教師あり。画像認識に使用する。

InceptionNet

Googleが開発した画像認識CNN。TensorFlowで利用可能。

Activation function(活性化関数)

ニューラルネットワークにおいて出力値を調整するための様々な関数

  • Hyperbolic tangent function(tanh):数値を-1.0~1.0の間に変換。
  • Sigmoid function:数値を0.0~1.0の間に変換。2値分類で使用する。
  • Softmax function:数値を0.0~1.0の間かつ合計で1.0になるように変換。3値以上の分類で使用する。
  • Leaky Rectified Linear Unit(Leaky ReLU):入力値が0以上であればそのまま、0以下であればa倍(aは通常0.01)する関数。
  • Xavierの初期値:活性化関数の出力結果がきれいに分散するように、局所解にトラップされないようにするための初期値(数式)

その他機械学習の用語整理

過学習(オーバーフィット)

  • モデルをトレーニングしすぎること。過学習の結果、モデルがトレーニング用のデータに最適化されてしまい、テストデータや実データに対する精度が落ちる。例えば、トレーニングデータには90%の精度だが、テストデータには70%の精度しか出ないといったことが起きる。
  • 過学習を防ぐ方法として、L1正則化とL2正則化という手法がある。L1正則化はあるデータの重みを0に、L2正則化はあるデータの重みを0に近づけていくことによって特徴量を削減していく。
  • 過学習を防ぐため、ドロップアウトというランダムにデータを0にし、欠損データを作る手法が用いられる。

    アンダーフィットとオーバーフィットに関する補足説明

  • アンダーフィットする場合:データを追加する、正規化を減らす。
  • オーバーフィットする場合:ドロップアウト、正規化を増やす、機能の組み合わせを少なくする。

以下のAmazon Machine Learning Developer Guideの説明が分かりやすい。

f:id:VbuiV:20220317110108p:plain 引用:モデルフィット: アンダーフィットとオーバーフィッティングと - Amazon Machine Learning

ハイパーパラメータ

  • 過学習のバランスや、バッチサイズ等、各種機械学習における様々な調整を行うパラメータ。

Reinforcement Learning(強化学習)

  • 動的にデータを取り込み、繰り返し学習を行う。

Incremental learning(増分学習)

  • 時間経過につれ、モデルの推論精度が低下していく場合に、データセットを拡張して行うトレーニング。

バッチサイズとエポック数

  • バッチサイズ:一回のデータ数、エポック数:繰り返す数。
  • 全部で10,000件のデータがあった場合、バッチサイズ=100、エポック数=100でトレーニングするか?バッチサイズ=200、エポック数=50でトレーニングするか?のようなことを検討する。

ホールドアウト法

  • データを分割する方法。
    シンプルにトレーニング用:テスト用=6:4、トレーニング用:テスト用=8:2などに分割。

K-fold cross-validation(K分割交差検証)

  • 分類と回帰に使用できる評価方法
  • データをKグループに分割し、各グループから1つテストーデータに、残りをトレーニングデータに利用する。
  • 層化K分割交差検証:データが偏っている時に使用するK分割交差検証で、元々のデータの割合を保って分割する。例え100個のデータ中にAのデータが10個、Bの90個だった場合に、K=10で分割するとAのデータが一つも含まれないグループが存在する可能性が高い。そういったケースにおいて、各グループが元々のデータと同じ割合を保つ必要がある場合に使用する。

K-means

  • 教師なし。データをK組にグループ分け(クラスタリング)する手法。散布図のようなイメージで可視化。
  • Kの数の決め方にはエルボー法とシルエット分析がある。
    • エルボー法:K=1,2,3・・・といろいろなパターンで試行した際のSSEの値を折れ線グラフで表現。大きく折れ曲がったところが最適なKと判断できる。
    • シルエット分析:K=1,2,3・・・といろいろなパターンで試行した結果をシルエットとして表現。シルエットの高さがなるべくそろっている時のKが最適と判断できる。
  • PCAやt-SNEで次元削減した結果にK-meansを実行するといった手法も用いられる。
  • t-SNEに比べて高速。

t-SNE

  • 高次元のデータを2~3次元に減らし、散布図のようなイメージで可視化する。

Principal component analysis (PCA)(主成分分析)

  • 教師なし。データが主にどの成分によって成り立っているかを可視化する。散布図のようなイメージで可視化。
  • 計算量を減らすため、データの特徴を保持したまま情報量を削減する(次元削減)。

Random Cut Forest (RCF)

Factorization Machines(FM)(因数分解機)

  • 教師あり。分類や回帰に利用可能。レコメンドの生成に使用する。スパースなデータ(スカスカ)からも学習可能。

Collaborative Filtering(協調フィルタリング)

  • 購入履歴などのユーザの好みを蓄積、分析し、レコメンドを行う。

Linear Learner

  • 教師あり。分類・回帰両方可能。

Gradient (勾配降下法)

  • 関数の最小値を求める。二次関数(Uの字)の頂点を求めるイメージ。パラメータ更新を繰り返しながら、計算する。
  • Gradient checking(勾配確認):式にミスがないか、誤差を確認することによってチェックすること。偏微分を近似して値が正しいかを確認する。
  • バッチ勾配降下法(最急降下法):毎回全てのデータを使用する勾配降下法。計算量が多い。極小値にトラップされやすい。結果は安定する。
  • ミニバッチ勾配降下法:パラメータ更新毎にランダムに抽出した一部のデータを使用する。バッチ勾配降下法と確率的勾配降下法の間の方法。
  • 確率的勾配降下法:パラメータ更新毎にデータを一つランダムに抽出して使用する勾配降下法。計算量は少ない。極小値にトラップされにくい。毎回結果が安定しないことがある。
  • Optimizer:RMSprop,Momentum,Adam,Adagrad等

XGBoost

  • 教師あり。分類・回帰両方可能。非常に強力で人気なアルゴリズム
  • Gradient Boosting Decision Tree(GBDT)(勾配ブースティング決定木)のフレームワーク
  • GBDT:Gradient(勾配降下法)とBoosting(アンサンブル)とDecision Tree(決定木)を組み合わせた手法

k-nearest neighbor algorithm(k-NN)(k近傍法)

  • 教師あり。分類・回帰両方可能でシンプルな手法。

Instance Segmentation(インスタンスセグメンテーション)

  • 教師あり。画像内の物体を分類。

Single Shot Multibox Detector(SSDアルゴリズム)

  • 教師あり。物体検知(車や飛行機等)。

Support Vector Machine (SVM)

  • 教師あり。分類・回帰を行う。

One Class SVM

  • 教師なし。外れ値/異常値検出

SVM-RBF

  • Radial basis function kernelを用いたSVM。精度が高い。

Term frequency–Inverse document frequency(tf-idf)

Term frequency(文書中の単語の出現頻度)とinverse document frequency(単語がどの程度レアか?)を組み合わせた指標。文書内の各単語の重要度を表現することができる。

ポアソン分布

ある事象が一定時間に何回発生したか?例:交差点の事故回数

オーバーサンプリング

  • アンバランスなデータを補正する手法。少数派クラスからデータを複製する。

アンダーサンプリング

  • アンバランスなデータを補正する手法。多数派クラスからデータを削除する。

Synthetic Minority Over-sampling Technique(SMOTE)

  • アンバランスなデータに対するオーバーサンプリングの手法の一つ。

目的変数(ターゲット変数)と説明変数

  • 数式でいうyとxの関係。yが目的変数、説明変数がx。

STL分解

  • 時系列データからトレンドや季節性を把握する手法。

ピアソン相関係数

  • -1.0~0~+1.0の間でデータ同士の相関関係を表現。
    -1.0:逆の相関がある。0:相関がない。+1.0:データ同士に強い相関関係がある。

Bayesian network( ベイジアンネットワーク)

  • グラフ構造と確率でデータを表現。頂点から延びる二つの辺に4:6などの割合があるイメージ。
  • ナイーブペイズ: ベイジアンネットワークの一種で、1つの親データに紐づく複数の子データ同士に相関がなく独立している状態。

機械学習フレームワークやライブラリ

Scikit-learn

Python機械学習用ライブラリ。Sagemakerで利用可能。
scikit-learn.org

Natural Language Toolkit(NLTK)

Python自然言語処理ライブラリ。意味推論や構文解析を行う。
www.nltk.org

TensorFlow

Googleが開発した機械学習ライブラリ。Sagemakerで利用可能。
www.tensorflow.org

Apache MXNet

Sagemakerで利用可能。 mxnet.incubator.apache.org

seaborn

グラフを作成するライブラリ。
seaborn.pydata.org

Horovod

分散型深層学習のフレームワーク
github.com