(-> % read write unlearn)

My writings in this are my own delusion

試験勉強: AWS Certified Machine Learning - Specialty / AWS 認定機械学習 - 専門知識

AWS 認定試験の Machine Learning Specialty (機械学習 専門知識)試験を受けた際にどんな勉強をしたか書き残しておきます。諸事情合って Specialty の5つの認定試験を受けました。Machine Learning 以外は試験準備としての勉強は大してしなかったので、それぞれの試験については最初に雑感を簡単に書きます。

AWS 認定 Specialty (専門知識)5試験

Specialty 試験は前は6つあったのですが、そのうちの1つである『認定 Alexa スキルビルダー試験』が 2021年3月22日で提供終了してしまったので現在受けることが可能なのは5つです。

aws.amazon.com

f:id:hatappo:20210506115902p:plain
利用可能な AWS 認定

試験を受けた順は以下の記載順と同じになります。

1. Database

  • MySQLPostgreSQL, Oracle 以外の RDBMS についてもっと復習しておけば良かったです。しかしなんとかなりました。

2. Security

  • 要点整理から攻略する『AWS認定 セキュリティ-専門知識』 この本を事前に読みました。せっかく試験対策本が出ているのでと買ってみましたが良本でした。広い範囲の知識が整理されているのがとても良かったです。また、模擬試験が掲載されているるのも良いです。ただ、一部記述内容に怪しいところもあったように思います。 Public IP がアタッチされていれば OK なところで Elastic IP でなければいけないような記述であったり、 AWS X-Ray はオンプレのサーバをトレーシングはできない、と書かれていました。
  • 振り返ってみると、Security の試験を最初のほうで受けておいて良かったです。なぜなら、基本的に他のどの試験でも Security 関連の問題はそれぞれの試験のメインテーマに即して一定割合出題されます。早い段階で全体的に整理し復習しておくのは効率が良いです。

3. Data Analytics

4. Advanced Networking

  • 出題内容から逆算して AWS Direct Connect についてしっかり復習しておきました。

5. Machine Learning

  • 後述

AWS Certified Machine Learning - Specialty

AWS Certified Machine Learning - Specialty

一番最後に受けました。なぜかというとサンプル問題を解いてみたら 3/10 しか正解しなかったので準備期間をとるためです。サンプル問題は上記の試験概要のページからリンクされています。PDF形式で10問です。公開されているサンプル問題以外に有料の「模擬試験」というのをオンラインで購入・受験可能です。こちらはより問題数が多いのですが、あいにく解答解説は得られないようです。

また、上記ページには「試験ガイド」の PDF もあわせてリンクされています。この試験ガイドには、出題内容の範囲と割合などもまとまっているため、試験勉強する上では重要です。

私自信はプログラマ/インフラエンジニアとしての数年の実務経験がありますが、機械学習は素人です。 以下、勉強に使った教材です。

1) 仕事ではじめる機械学習 第2版

イムリーに第2版が出たばかりで話題になっていたので買ってみました。結果としては最高でした。試験勉強としても関係なしでも役に立つ知見が非常に整理されてまとまっています。第2章は代表的な機械学習アルゴリズムの用途と仕組み、Pros/Cons、チューニング方法などを整理したカタログ然とした形式ですが、ここは必読です。ここに掲載されているアルゴリズムは最低限知っているべきものばかりです。以降〜第8章までで第1部を構成しているのですが、基本的にここまで読んだほうがいいでしょう。第9章からが第2部となり、実際の適用例をもとにしたケーススタディです。試験という意味では9章以降は重要ではないですが、本の内容としてはここからさらに面白く(でありながら読みやすい)なっていくのでたぶん読みたくなってしまうんじゃないかと思います。以下、3〜8章について軽く内容を紹介しておきます。

第3章は学習結果の評価方法についてです。学習のチューニングの前提となる大事な知識です。そもそも適切な評価方法を選択できなければチューニングも改善もありません。評価方法はアルゴリズムとビジネス課題・目的によって変わります。第4章は本番アーキテクチャとデプロイについてです。予測(推論)をどのように処理するかのパターンを整理しているのとログ設計についても触れています。第5章は学習データをどう集め、前処理し、準備するか、です。第6章は継続的なモデルのメンテナンスやシステムの改善、すなわち継続的トレーニング( CI や CD 同様に CT と表現しています)のための考慮事項です。組織課題から掘り下げて考察している点は試験には出なかったとしても非常に勉強になります。第7章はデプロイした機械学習施策の評価についてです。第3章が学習モデルの評価方法だったのに対して、第7章はより大きなビジネスの視点での結果の評価や判断についての話になります。第8章はモデル自体の可視化や説明についてです。これは社内レポーティングの際に求められる要素でありビジネス上は重要かもしれませんが、この試験のスコープからは外れるかもしれません。

AWS の個別サービスに対する言及も本書内で複数ありますが、基本的には AWS に縛られない汎用的な書籍ですが、整理された知見と機械学習をビジネスにどう落とし込むかという考え方のどちらも試験にも大いに役に立つと思います。

2) Amazon SageMaker のドキュメント

ドキュメントは全体を一読したほうが良いですが、特に各組み込みアルゴリズムの用途、特徴、Pros/Cons、チューニングについて整理して理解しておくのに公式ドキュメントが役に立ちます。これを読む際も前記『仕事ではじめる機械学習 第2版』の第2章を中心とした内容は予備知識としても効いてきます。

docs.aws.amazon.com

3) これならわかる機械学習入門 (KS物理専門書)

何冊かトライしましたが、機械学習自体の仕組みを数学的に理解するにはこちらが一番分かりやすかったように思います。Amazon レビューを読むとこの本で数学的なところを理解できたと思うのは間違いなのかなという気がしてきますが、入り口としては有効なのではないかと思います。この本のような内容を理解していなくても試験自体は合格可能かもしれません。しかし、基礎知識としてあると各アルゴリズムを理解していく上でも全然違います。

4) 見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑

こちらも各アルゴリズムを理解していく助けになります。図鑑という形式なことからも分かるとおり図やグラフが豊富なので取っ付きやすいし見ていて楽しいです。早い段階でざっと一読すると良いと思います。

5) ディープラーニング (やさしく知りたい先端科学シリーズ2)

こちらは何年か前に読んだ本ですが、深層学習や機械学習について本当に何も知らない人だとしたらこのあたりから読むのがも良いと思います。専門学校卒 IT 素人の私の家族も読んでましたが、なんとなく分かったかも、と言っていました。

6) 眠れなくなるほど面白い 図解 AIとテクノロジーの話

ディープラーニング (やさしく知りたい先端科学シリーズ2)』よりさらに初心者向け、文系の人も読める AI の本です。機械学習の話も出てきますが、どちらかというと AI の話です。AI 開発歴史などをも知れるので休憩がてら。かなり昔にコンビニでジャケ買いしました。

7) AWSでつくる AIプログラミング入門

AWS機械学習関連の一連のサービスは次のスライドのように Tier を分けて分類することができます。*1 一番上の「AI サービス」というのは、AWS 側で予めトレーニングが完了している汎用的なモデルであり、Web API 化されておりユーザのシステムにダイレクトに組み込むことが可能な提供形態になっています。画像認識や、音声認識自然言語理解、OCR など多様なジャンルのサービスがありますが、これらを一通り学習するのに最適な書籍でした。ただ、私はこのあたりは以前から十分に知識があったため、書籍自体は斜め読みしただけできちんとは読んでおりません。

8) AWS ホワイトペーパー

機械学習関連のホワイトペーパーも複数あるので一通り目を通すのが良いですが、おすすめは

  • MLOps: Continuous Delivery for Machine Learning on AWS
  • Managing Machine Learning Projects

少し古い内容もある(後者はとくに)ので、記載内容を SageMaker Studio など新しい機能でどう変わるかなど自身で脳内補完するようにしてください。

9) ml-system-design-pattern by mercari

engineering.mercari.com

メルカリさんによる機械学習デザインパターン集です。 AWS 関係なく汎用なアーキテクチャが論じられている内容なので「これを AWS で構築するとどうなるか?」というのを自問自論しながらで読んでいくと良いです。結構ボリュームがあるので アンチパターン から読んでくのもおすすめです。実際の失敗や苦労が見えるように感じ興味深いです。

10) n月刊ラムダノート Vol.1, No.1(2019)

n月刊ラムダノート Vol.1, No.1(2019)www.lambdanote.com

『仕事ではじめる機械学習 第2版』の著者の1人である有賀さんが『MLOps の歩き方』という章を寄稿されています。ML システムの運用が単なるウェブシステムの運用と何が異なるのか、という視点で初心者向けに書かれているので、 MLOps という概念事態に馴染みのない方には特におすすめ。私は出版当時2019年頃に読んでいたので特に試験前には読んでいません。

11) ML Ops on AWS AWS Summit Tokyo 2018

https://d1.awsstatic.com/events/jp/2018/summit/tokyo/aws/44.pdf

少し古いですが、こちらも MLOps という課題をイメージ理解するのに役立つスライド資料です。

まとめ

AWS Certified Machine Learning - Specialty 試験は、ビジネスで使う機械学習システムの構築・運用を学ぶには最適の内容です。AWS のサービスについての知識ももちろん問われますが、総合的には実践的なないようなので、これを口実に機械学習の勉強を進めるのは良い方法だと思います。私もそのように勉強できたかなと思っています。

試験対策という観点では、他試験も受ける予定であればまずはセキュリティをおさえる。それから自分の足りない所を上記リソースなども使って勉強していくといいと思います。

*1:このスライドは古いので最新のラインナップや構成は公式ドキュメントをご確認ください

自治体の情報セキュリティと三層分離

日本の地方自治体に特有のネットワーク構成である LGWAN や要件である 三層分離 について改めて勉強するために2冊の本を読んだので記録をまとめます。

LGWAN とは、総合行政ネットワーク (Local Government Wide Area Network) の略です。

J-LIS 目的及び基本方針

地方公共団体の組織内ネットワーク(以下「庁内LAN」という。)を相互に接続し、地方公共団体間のコミュニケーションの円滑化、情報の共有による情報の高度利用を図ることを目的とする、高度なセキュリティを維持した行政専用のネットワークです。

自治体だけでなく、地方公共団体に広く利用されています。中央政府については LGWAN は使っておらず、似た用途のもの(しかし全くべつもの)として 政府共通 NW (G-NET) というものがあります。

これで万全!自治体情報セキュリティ~攻めるなら守ってみせよう情報資産~ オンデマンド (ペーパーバック) – 2021/6/1

情報セキュリティとはなにかという基本から始まり、情報セキュリティポリシーについて解説されています。また、セキュリティ関連法案や公共系のセキュリティ事案(インシデント)について代表的なものを取り上げて紹介しています。セキュリティの組織体制の構築の仕方やその組織とポリシーの運用についてもそれぞれ独立した章が割かれています。

以下メモ。

  • 情報システム強靭化対策
    • 平成27年日本年金機構の情報流出事案を受けて自治体情報セキュリティ対策チームが結成され報告書が作成。それに基づき情報セキュリティ体制の強化進められた。
    • その強化策の1つが、いわゆる三層分離という、取り扱う情報に応じて NW セグメントを完全に3つに分離するという NW 設計。インターネットに繋がる NW とそれ以外に分けるのではなく、3つに分けているところに実用性を重視した考慮を感じるとともにかえって運用が大変そうな印象もうける。
  • 三層分離
    • 1) 中間サーバや団体内統合宛名が接続し、個人番号(マイナンバー)利用事務を行う「個人番号利用事務 LAN 」(基幹系システム LAN)
    • 2) LGWAN メールや財務会計、文書管理システムが接続し、個人番号関係事務を行う「 LGWAN」(情報系システム LAN)
    • 3) インターネットに接続し、外部メールや ASP サービスなどのパブリッククラウドサービスなどを利用する「インターネット接続 LAN
  • これらのネットワークセグメントをわけ、ネットワークを介したデータやファイルのやりとりを禁止する。
  • しかし、当然データやファイルを相互にやりとりしなくてはいけないことはある。住民からオンライン申請でインターネット経由で送信された手続きの処理にマイナンバーが必要になる、とか。そんなときどうするか?その1つが「無害化」。
  • 無害化(ファイル無害化)
    • インターネットメールサーバのメール本文のみ抽出したり、 VDI などの仮想化環境を使うことで、仮想化環境から転送された画面を操作して Web を参照可能とする方法、などの方法が例示されている。
    • 書籍中では触れらていないようだが、ファイル無害化のソフトを提供する会社もあり、そういったソフトの処理を経由することで悪意のある(可能性のある)ファイルを改変し文字通り無害化する方法もあるようです。
      • 例えばマクロ付きの Excel ファイルからマクロを除去したり、と言った処理は典型的な無害化の方法なのではないかと思います。

この本は、電子版と単行本版とペーパーバック版があり、単行本版だけ 3,631 円と、電子版/ペーパーバック版より1.5倍くらい値段が高いので注意。ただ、Amazon で見る限りだと単行本版のほうが中古が出回っているので、そっちもありだと思います。

最新の動向と実務がわかる 自治体の情報システムとセキュリティ 単行本 – 2019/10/30

こちらの本は、セキュリティにとどまらない最新の技術動向を広く紹介しつつ、今後どうセキュリティの考え方が変わっていくかを考える内容になっています。ブロックチェーンなど最新の技術を扱いながらもその基本的な要素技術にも触れてくれていたり、 OA 化の歴史から遡って現在を捉えたりと、全体として解説が親切でありがたいです。自治体や公共のセキュリティを扱う本としてはこれはなかなか珍しいのではないかと思います。

また、こちらの本でも現在の公共セキュリティの輪郭を作った事案といえる、日本年金機構における不正アクセスによる情報流出事案を紹介しています。その他にも、

も取り上げています。これら(日本年金機構のを含め)3つの事案は、かなりの紙幅を使って詳細に経緯を取り扱っています。

その後に後半では、実際に情報セキュリティを構築する方法や運用についてとなります。

この本は、クラウドや AI、 RPA、キャッシュレスなどの最新技術とその活用について公共組織の観点を踏まえて扱っている点が特徴だと思います。とても勉強になりました。

Golang with VSCode 4日目 ショートカットキー

Golang 入門にして4日目になった。静的型付けの言語なのに IDE 使わなくてまともに開発できるの?と思っていたけど VSCode はすごい。適当に促されるまま Extensions を入れていっただけなのにすごく快適にコードが追えるし補完も効く。いつ IntelliJ に乗り換えようかと考えていたがしばらくこのまま VSCode でいきたいと思います。 VSCode ありがとう。

標準ライブラリや go get したライブラリのコードも含めて定義にジャンプして追っていけるのはすごく便利。めっちゃ勉強になります。

よく使うショートカットキー (Mac です)

  • Golang のコーディング/リーディング
    • F12 or Command + Click 定義にジャンプ
    • Shift + F12 逆に参照されている箇所を一覧し、ジャンプもできる
    • Ctrl + - 上記でジャンプしてたどった履歴を順に「戻る」
    • Ctrl + Shift + - 上記で戻った履歴を順に「進む」
  • VSCode
    • Command + b サイドバーをトグル(開いたり閉じたり)する
    • Command + Shift + e サイドバーの ファイルエクスプローラ を開く (Explorer)
    • Command + Shift + f サイドバーの 検索 を開く (Find の F?)
    • Command + Shift + d サイドバーの デバッグ を開く (Debug)
    • Command + Shift + x サイドバーの エクステンション を開く (eXtension の X ?)
    • Command + Shift + g サイドバーの ソースコントロール を開く(Git の G ?)
    • Ctrl + Shift + ` エディタ上でターミナルを起動。実行するたびにタブでどんどん起動されて増えていく。 Command + Backspace で逆に消せるらしいが使ってない。
    • Option + z ソフトラップ(エディタの右端を超えたら折り返して表示)をトグルする

こうやって書き出してみると VSCode を使い倒してる感があんまりないことが分かりました。精進したら追記していこうかな。

コード補完とスニペット

関数を必要とする引数の場所で func って書くと必要なシグネチャで匿名関数のスニペットを作ってくれるのがとても便利。それを外出しの関数としてシュッと作りたいんだけどショートカットあるのかな?

iferr でこのスニペットが出るのは優秀。ife の3文字の段階でユニークなのでそれで使ってる。

if err != nil {
    return nil, err
}

おまけ

ところで ↓ こんな感じで、マークダウンのコード表記中にバッククオート`を書けることを知りました(はてなだけかも)。 ``Ctrl + Shift + ` ``Ctrl + Shift + `