[2020年7月] Google Cloud Certified – Professional Data Engineer日本語版(プロ認定):暗記ポイント、意味不明単語リストの解説など(3)

どうも、すえきあおいです。

前回に引き続き、Professional Data Engineer日本語版の模試を受けて、勉強して理解したことや暗記ポイントと思われる箇所を、私なりに噛み砕いてピックアップしております。

ちなみに、私が遠隔監視(オンライン)で本番試験を受けるのは2020年7月29日。

これを書いているのは7月22日(水)ですが、当記事は予約投稿なので、記事が公開された当日、私は試験を受けている真っ最中でございます。みんな、オラに元気を分けてくれ!

いよいよ来週かー。がんばります。

 

模擬試験の解説を読んでわかった暗記ポイント(続き)

Speech-to-Text

音声を正確にテキストに変換する。

使うときのポイントをざっとまとめました。

  • このサービスはノイズのある音声を処理するように設計されている。
    • なので、音声をサービスに送信する前にノイズ低減信号処理(AGCなど)を適用すると、認識精度が低下する。余計なことはしないよう注意(笑)
  • 短い音声:1分未満 →同期モードでリクエスト送信すべし
  • 長い音声:1分以上 →非同期モードでリクエスト送信すべし
  • 再サンプリングは避ける
    • サンプリングレートが推奨値の16,000Hz以下は、sample_rate_hertzの値で調整すべし
  • 短い発言の認識:StreamingRecognizeで single_utterance フィールドを true にする。

ちなみに、utteranceは「発話」。英語できなくて辛い…マジで…

 

Cloud Vison

画像をいろんな特徴タイプで認識・識別するプロダクト。

Vision API に画像データを読み込ませる方法は二つ。

  • 画像の URI パスを指定する
  • 画像データを Base64 エンコード テキストとして送信する

検出できる特徴タイプは以下の通り。

 

VisionのORC(光学式文字認識)

TEXT_DETECTION モデル:任意の画像からテキストを検出、抽出します。たとえば、写真に道路名や交通標識が写っていれば、抽出された文字列全体、個々の単語、それらの境界ボックスが JSON レスポンスに含まれます。

DOCUMENT_TEXT_DETECTIONモデル:手書き文字や、本のような長い文章(ドキュメント)のテキスト検出に使う。

Cloud Storage に保存されている PDF ファイルと TIFF ファイルのテキストを検出して転写することもできる。その場合、指定された PDF または TIFF の場所とファイルのページ数を示す context フィールドが追加される。

 

Visionのクロップヒント検出

四角い写真の頂点(左上、左下、右上、右下)の座標を検出する。

 

Visionの顔検出

画像に含まれる複数の人物の顔を検出する。

さらに感情や wearing headwear(=帽子をかぶっている) など、関連する主な顔属性についても識別する。

ただし、特定の個人の顔認証はサポート外。

 

Visionの画像プロパティ検出

ドミナント カラーなど、画像の一般的特性を検出する。

 

Visionのラベル検出

画像内のエンティティについての情報を、幅広いカテゴリにわたって検出、抽出する。

ラベルにより、一般的な物体、場所、活動、動物の種類、商品などを識別できる。

ラベルは英語でのみ返される。

この写真だと

これが返ってくる。

 

Visionのランドマーク検出

よく知られている自然のランドマークや人工建造物を画像から検出する。

LANDMARK_DETECTIONモデルを使う。ランドマークの名称、MID値、BoundingPoly(=クロップヒント)、LatLng(位置情報)が返ってくる。

 

Visionのロゴ検出

よく知られている商品のロゴを画像から検出する。

LOGO_DETECTIONモデルを使う。

 

Visionで複数のオブジェクトを検出する

オブジェクト ローカライズにより、画像内のオブジェクトが識別され、オブジェクトごとに LocalizedObjectAnnotation が指定され、オブジェクトに関する情報、オブジェクトの位置、画像内でオブジェクトがある領域の四角い境界線が識別される。

この画像だと、、、

こう言うのが返ってくる。

 

Visionのセーフサーチ検出

は、アダルト コンテンツや暴力的コンテンツなど、画像に含まれる不適切なコンテンツを検出する。

この機能は 5 つのカテゴリ(adult、spoof、medical、violence、racy)を使用し、それぞれのカテゴリが特定の画像に存在する可能性を返します。

こういうのが返ってくる。

{
  "responses": [
    {
      "safeSearchAnnotation": {
        "adult": "UNLIKELY",
        "spoof": "VERY_UNLIKELY",
        "medical": "VERY_UNLIKELY",
        "violence": "LIKELY",
        "racy": "POSSIBLE"
      }
    }
  ]
}

 

 

Visionのウェブ検出

画像に対するウェブ参照を検出する。関連の高い名称、一致する画像のURLなどが返ってくる。

WEB_DETECTIONモデルを使う。

 

Spring Framework で Visionを使う方法

Spring Cloud GCPのライブラリを使うと、アノテーションを使って簡単にVision APIを呼び出し、使うことができる。こんな感じ。

@Autowired private CloudVisionTemplate cloudVisionTemplate;

AutoML Translation

自動翻訳プロダクト。

AutoML系のラベルって英語しか対応してないので、日本語でやりたかったらVisionの前後にTranslationを使いなされってことらしい。

ちょっと前にAutoML NL使ったんですが、やっぱりその時も翻訳の必要があって、Pythonのkakasiってライブラリを使いました。めんどくさかった…先に知っときたかった…

 

Knowledge Graph Search API

google knowledge graphってなんやねんって思ったので画像検索してみました。どうやらこう言う感じで関連が見れるグラフらしい。

 

AI Platform Data Labeling Service

人にラベリングをお願いできるサービス。ベータ版でしたが、こんなのがあるとは!

確かに、機械学習で教師ありで分類なり予測なりしたい時にデータにラベリングする(正解データを作る)のがネックになること多いですからね。まぁ…画像分類だと1000個の画像にラベルつけてもらうのに$35なので、お金はそれなりにかかりますね(笑)

 

Cloud Logging

ロギング周りはこちらにまとめました。

 

 

意味不明単語リストの解説(続き)

自動利得制御(AGC)

自動利得制御(じどうりとくせいぎょ、英: automatic gain control, AGC)とは、多くの電子機器で使われている適応システムである。ピーク信号レベルをフィードバックすることで利得が入力信号レベルに対して適切な範囲になるよう調整する。 例えば、AGCのないAMラジオでは、信号の強弱によって出力音声が大きくなったり小さくなったりする。

 

gRPC

gRPCはGoogle謹製のHTTP/2を利用したRPCフレームワーク。

 

RPC

RPC(Remote Procedure Call)とは、遠隔手続き呼び出しとも訳され、ネットワーク上の異なるコンピュータ間(または1台のコンピュータの内部)で、稼働するプログラム同士で通信をするために使用するプログラムのこと。

 

VisionにおけるMID値

MID=Machine-generated Identifier:機械で生成された識別子

Google Knowledge Graph エントリに対応する MIDが格納されている。

 

クロップヒント

画像上のクロップ領域の頂点を示します。

Visionでクロップヒントの検出ってやると、こんな感じのレスポンスが返ってくる。

{"x": 0, "y": 520}, {"x": 2369, "y": 520},{"x": 2369,"y": 1729}, {"x": 0, "y": 1729}.

 

クロップ

クロップとは、デジタルカメラが撮影時に、画像の一部分を切り出すこと。

ちなみにトリミングは撮影後の画像の一部分を切り出すこと。

 

ドミナント カラー

配色全体を支配するような色相。

 

エンティティ

何らかの標識や識別名、所在情報によって指し示される、独立した一意の対象物。

 

ML DNN

ML:Machine Learning

DNN:Deep Neural Network

なので、ディープニューラルネットワーク(深層学習)のこと。

 

AI Platform Trainingの長時間実行オペレーション

バージョンの作成には最大で24時間かかる。

あとはモデルの削除、バージョンの削除があるが、これらはほぼリアルタイムで終わるらしい。(じゃあ長時間オペレーションじゃないやん?w)

 

Keras

ディープ ラーニング モデルを構築してトレーニングするための高レベル API。

 

活性化関数

機械学習において、機械がデータを学習しやすいように、データを整えるための関数。

データを整える方法は以下2つ。

  • 単位を揃えて比較しやすくする(正規化):Tanh、Sigmoid
  • ノイズを削除して比較しやすくする:ReLU

よく使う活性化関数は次の3つ。

  • ReLU(Rectified Linear Unit):ランプ関数。マイナス値を0に置き換える。
  • Tanh(ハイパボリックタンジェント):双曲線正接関数。-1から+1の値に変換。
  • Sigmoid(シグモイド):シグモイド関数。0から1の値に変換。

 

バックプロパゲーションの失敗例と、ニューラルネットワークを正規化する最も一般的な方法

グラデーション(勾配)の消失

下のレイヤー(入力により近い)のグラデーションは非常に小さくなる可能性があります。ディープネットワークでは、これらの勾配の計算には、多くの小さな項の積を取ることが含まれます。

下のレイヤーの勾配が0に向かって消失すると、これらのレイヤーは非常にゆっくりとトレーニングするか、まったくトレーニングしません。

→ReLUアクティベーション(活性化)機能を使う

 

グラデーション(勾配)の爆発

ネットワークの重みが非常に大きい場合、下位層の勾配には多くの大きな項の積が含まれます。この場合、グラデーションが爆発する可能性があります。グラデーションが大きくなりすぎて収束できなくなります。

→バッチ正規化。学習率を低下させる可能性があるため、勾配の爆発を防ぐのに役立ちます。

→もしくは、クリッピング。勾配の上限値を決めて、上限値以上になったら上限値で正規化。

 

Dead Neuronsの問題(Dead ReLU ユニット)

ReLUでは勾配がトレーニング中に壊れやすく、死ぬことがある。それは、いかなるデータポイントでも再び活性化されないようにする、ウエイトの更新(加重和が0を下回る)を引き起こす可能性があります。

→Leaky ReLUを使う。

「0」を基点として、入力値が0より下なら「入力値とα倍した値」(α倍は基本的に0.01倍)、0以上なら「入力値と同じ値」を返す、ニューラルネットワークの活性化関数を指す。ReLUの拡張版。

「Leaky(漏れている)」という言葉の通り、ReLUでは入力値が0以下の場合は出力値が常に0だが、Leaky ReLUでは入力値が0より下の場合、出力値は下に漏れ出す(leak)ように0より下の値を返す。]

 

Drop out(ドロップアウト)

過学習(過剰学習)への代表的な正規化対策。

ランダムにノードを非活性にして学習する処理。

単一の勾配ステップでネットワーク内のユニットのアクティブ化をランダムに「ドロップアウト(=非活性化)」することで機能します。 ドロップアウトするほど、正則化が強くなります。

0.0 =ドロップアウトの正規化なし。
1.0 =すべてを削除します。 モデルは何も学習しません。
0.0と1.0の間の値=より有用です。

学習のたびにランダムに非活性化されるノードが選ばれるので、実態は同じなのに毎回違う重みづけがなされるわけです。

普通の(全ノード活性化)状態で200回学習すると過学習となる場合でも、毎回ランダムにノード状態を変えて200回学習して、その結果を総合するアンサンブル学習にすれば、汎化性能が高まって過学習にならないのです。

ドロップアウトの他に、アンサンブル学習、K分割交差検証  (K-fold cross-validation) などもある。

 

回帰分析におけるモデルの評価方法

  • RMSE(Root Mean Squared Error):二乗平均平方根誤差
    • 誤差なので、値が小さいほどモデルが適切にデータを表現できていることを意味する。
  • MAE(Mean Absolute Error):平均絶対誤差
    • 誤差なので、値が小さいほどモデルが適切にデータを表現できていることを意味する。
  • 決定係数 R2:普通0〜1の範囲の値をとる。
    • 値が大きいほどモデルが適切にデータを表現できている(線を引けている)ことを意味する。

 

誤差逆伝播法(バック・プロパ ゲーション)

ニューラルネットワークの教師あり学習方法。よく使われる。

 

n-gram

自然言語処理における「n-gram」とは、連続するn個の単語や文字のまとまりを表します。
例えば以下の文がデータとして与えられたとします。

  • 太郎 は りんご を 買 った

ここでスペースは単語の区切りを表す場合、4つの3-gramが含まれることになります。

  • 太郎 は りんご
  • は りんご を
  • りんご を 買
  • を 買 った

同様にして、n=2の時は以下の5つの2-gramが含まれています。

  • 太郎 は
  • は りんご
  • りんご を
  • を 買
  • 買 った

すなわち、T個の単語からなる文においてT-n+1個のn-gramが含まれていることになります。

 

いよいよ次回で最終回。

それでは!

末岐 碧衣
  • 末岐 碧衣
  • フリーランス のシステムエンジニア。独立後、一度も営業せずに月収 96 万円を達成。1986年大阪生まれ。早稲田大学理工学部卒。システムエンジニア歴 12年。
    2009年、ITコンサルティング企業に入社。3年目でコミュ障が爆発し人間関係が崩壊。うつにより休職するも、復帰後はコミュ障の自覚を持ち、「チームプレイ」を徹底的に避け、会社組織内においても「一人でできる仕事」に専念。社内外から評価を得た。
    無理に「チームプレイ」するよりも「一人でできる仕事」に専念した方が自分も周囲も幸せにできることを確信し、2015年フリーランスとして独立。