オンラインでロンドン大学のComputer Science(AI/ML)の学士を取ることにした

Coursera ロンドン大学学士(ML/AI)申し込み情報の整理

Bachelor of Computer Science

Coursera のオンラインでロンドン大学の CS の学士を取得できる。7コースのBScが用意されていて、 Machine Learning and AI Data Science Web and Mobile Development Physical Computing and the Internet of Things Games Development Virtual Reality, User Experience の中からスタート時に選択することになる。

今回は Machine Learning and AI に応募してみようと思う。コースの詳細はここに書かれている。

https://london.ac.uk/courses/computer-science-machine-learning-and-ai

コース概要には下記の用に書かれているのだが、コースを通じて公開できるようなものを作るのだろうか。

https://www.coursera.org/degrees/bachelor-of-science-computer-science-london

Create a portfolio of coursework to present to potential or existing employers.

URL に書かれているように、週に 14 - 18 時間で 3 - 6 年で取得できるとのこと。今回は働きながら取得するので、けっこう大変そう。

応募資格

応募には Standard entry routePerformance-based admission route の2種類がある。それぞれの詳細はこの PDF の Entrance requirements の項目に書かれている。

https://london.ac.uk/sites/default/files/programme-specifications/progspec-computer-science-2018-19.pdf

入学要件を満たしていれば、 Direct entry route のルートで試験などなしでエントリーが可能。それを満たしていなければ、いくつか試験やコースを事前に受けて能力の要件を満たせればエントリーができるぽい。GCSE というのは、イングランドウェールズ北アイルランドの共通試験で、16 歳までの義務教育を追える時に受験するもので、A~Gのグレードで評価されるらしい。

Entry route 1 – Direct entry route To be eligible to register, applicants must:  normally be aged 17 or above by the registration deadline of the session in which they will be entering  satisfy the University of London General Entrance Requirements for an undergraduate programme  have a qualification equivalent to a pass at UK GCE 'AS' level in a mathematical subject or a UK GCSE/GCE 'O' level in Mathematics at no less than grade B (equivalents can be found on our website).  satisfy the University of London English Language Requirements

Entry route 2 – Performance based admission If applicants do not meet the academic requirements for direct entry, they can apply for the programme via the performance based admission route. To be eligible to register, applicants must:  have passed at least four separate subjects at GCSE or GCE O level, with grades A to C, or the equivalent; and  satisfy the University of London English Language Requirements To be admitted onto the full BSc programme, applicants must:  pass both Introduction to Programming I and either Numerical OR Discrete

応募の準備をする

まずは楽な Standard entry route でのエントリーを目指す。 Standard entry route は英語能力の他にイギリスの国家資格であるGCSEの成績が必要になるため、 Performance-based admission route で応募をした。GCSEは日本の中3, 高1に当たるyear 10, 11を通してイギリスの学生が受けるものらしい。 ちなみに、国毎に要件が違っているらしく、詳細はここで確認できる。ここら辺は Coursera は親切で、PDF とかを漁らなくても、リンクをたどっていって、トグルから国を選べば要件を確認できるようにしてくれている。ただ、英語の requirement がなぞ。

https://london.ac.uk/entrance-qualifications

Upper Secondary School Leaving Certificate: provided an overall average of at least 4 (out of 5) is achieved in all subjects taken over the 3 year period. In addition applicants must provide sufficient evidence confirming that they have been offered a place to study a degree at a recognised (National, Public or Private) Japanese higher education institute. G

Kotogakko Sotsugyo Shomeisho (Upper Secondary School Leaving Certificate): comparable to UK GCSE grade A – C / 9 – 4 provided grade 2 - 5 is achieved on a subject for subject basis in final year of schooling (with the exception of English Language) O

Kotogakko Sotsugyo Shomeisho (Upper Secondary School Leaving Certificate): Mathematics passed at grade 3 - 5 in final year of schooling satisfies the Mathematical programme requirement for all BSc degrees in Computing. S

応募してからの流れ

ロンドン大学のサイトから必要情報を入力して応募する。

スクショを取るのを忘れたが、氏名・性別・国籍・住所などの基本的な情報の他に、高校の卒業証明と成績証明、基本的な数学能力と英語能力の証明書を提出した。少なくとも数学能力と英語能力の証明は割と柔軟にチェックをしてくれるみたいで、必要書類ではなかったが日本の学部に在学時の成績証明で問題なかった。

応募後、ロンドン大学から追加でドキュメントを求めるメッセージが来た。

It will be necessary for you to send in a supporting statement in a minimum of 100 words outlining your reasons for applying for this programme.

Please ask your university to send a certified statement confirming that the medium of instruction for your studies was English, direct to this office, marked for the attention of the Admissions Office to xxx@xxx.xxx.xxx.

  • 1つ目はいわゆるPersonal Statementのようなもので、志望動機を記載する
  • 2つ目は、英語学力の証明として日本の学部(教材/講義が英語の比率が多い大学だった)の成績証明を添付したので、それを大学側から証明してくれとのことらしい

1つ目のPersonal Statementに関しては、Webで調べるといろいろと参考が出てくると思うが、海外の大学が記述方法を教えてくれていたりする。

(例:サセックス大学)https://www.sussex.ac.uk/study/masters/apply/tips-for-masters/personal-statement

2つ目はけっこう厄介で、日本の大学側がそういう対応を通常はしていないとのことだったので、個別に交渉してなんとかメールをロンドン大学に送ってもらった。最終的には、こちらでメールの文面を全部用意して、それをただ転送してもらうことで、いちおう日本の大学からのエビデンスとした。

大学からメールを送った数日後にロンドン大学から合格のメールが届いた。

I am pleased to confirm that your application to the BSc Computer Science (Machine Learning and Artificial Intelligence Pathway) programme has been successful. Congratulations, you are a step away from joining the World Class!

「AIには何ができないか」個人的メモ

AIには何ができないか

第1部 コンピューターはどうやって動くのか

第1章 ハロー、読者のみなさん

著者のキャリア

  • Meredith Broussard sさん
  • 子供の頃にロボットを組み立てたのが技術的な好奇心のスタート
  • 現実のテクノロジーは想像には及ばない 機械は壊れる ことを経験する
  • 1991年9月からハーバード大学でCSを学び始める
  • ロボット作成の経験から、 テクノロジーが世界を救う という希望だけの論調に懐疑的
  • インターネット世界ができていくのを大学の量で体感する
  • 数万人いた学生の内、CSの女性は2名のみでジェンダーの壁を感じて専攻を変更
  • 卒業後、データサイエンティストの職につき、その後、データジャーナリストに
  • ジャーナリストとして、 ものごとを疑ってかかる ことを学ぶ

データジャーナリズムについて

数字をの中にストーリーを見出し、数字を使ってストーリーを語る仕事

  • らしい
  • この本自体も、データを織り交ぜなから極力客観的に書こうとしているぽい
  • Meredith はテクノロジーに期待されていることと、実際にできることにズレを感じている
  • この本は、 テクノロジーにできることの限界を理解するためのガイド という位置づけらしい
  • 「技術至上主義(テクノショービニズム)」に警鐘を鳴らしたいらしい
  • テクノショービニズムには、 テクノ自由至上主義 ハラスメントを認識しない言論の自由への称賛 などが含まれる

この本の構成

  • 1~4章では、コンピューターがどうやって動作するか基本的なことの解説
  • 5章では、アメリカの教育において、なぜ生徒を標準テスト(SAT)に合格させられないか
  • Meredith が体験した話しを交えて
  • 6章では、コンピューターの歴史の解説
  • 7章では、機械学習の基礎的な部分について解説
  • 8章では、自動運転の実現の難した
  • 9章では、機会学習における「ポピュラー」と「良い」の混同について
  • 10, 11章では、機械学習をつかった Meredith さんのプロジェクトについて

第2章 ハロー、ワールド

  • Python で 'Hello World!!' する方法や、コンピューターのハードの説明
  • 基本的なことが多いからけっこう飛ばした

第3章 ハロー、AI

汎用型AI特化型AI

  • 機械学習の基本的な部分の解説
  • 汎用型AI特化型AI の違いについて
  • 新スタートレック」や「2001年宇宙の旅」に出てくるロボットは 汎用型AI
  • 多くの人はAIと聞くと、 汎用型AI を想像する
  • Meredith さんは、 汎用型AI想像上の存在 ハリウッド的なAIとしている
  • 特化型AI予測のための数学的手法

特化型AIは、既存のデータセットを分析し、そのデータセット内のパターンや確率を明らかにし、そうしたパターンや確率をモデルと呼ばれる計算論的な構造物に体系化することによって機能する。

AlphaGo がどうやって動いているか

  • AlphaGo も特化型AI
  • オンライン上にある、膨大な対局データを学習させて作られた
  • すべてのデータは人が何かしらの形で集計に関わっている
  • AlphaGoの場合は、人が対局した記録が教師になっている
  • めっちゃおおまかには下記の流れで動いているらしい

  • 3000万局の中から、もっとも価勝ちにつながる可能性の高い手を選ぶ

  • その一連の手の中から1手を選ぶ
  • 別のアルゴリズムでは、手の勝率を計算する

  • AlphaGo はプログラムとしては素晴らしいが、意識を持たない特化型の AI

Alexa

  • 音声型インターフェースも、いっけん知性があるように見えるが、知性はない
  • 言語を理解している訳ではなく、音のシーケンスをコマンドとして理解している

章の締め

  • 特化型 AI には、「機械の中のゴースト」があるわけではない

あるいは、大いに喜び、人工デバイス(コンピュータ)と真に知的な存在(人間)とが協力して仕事をしたときに何が可能になるかを、進んで受け入れることもできる。わたしの好みは、後者のアプローチだ。

第4章 ハロー、データジャーナリズム

  • 計算社会科学、計算生物学、計算科学などあらゆる分野でコンピュータの使用があたりまえになった
  • ジャーナリストもハイテク化が進んでいる
  • 報道の分野で技術を活用している人は データジャーナリスト を自称している

インフレーションの細かいパーツすべて

  • アメリカ人の出費がタイル状にビジュアライゼーションされている
  • オーストラリアの干ばつが北米の卵の価格の上昇にどのように繋がっているか相互関連の理解を助けてくれる

アトランタ・ジャーナル=コンスティテューション

  • 患者に性的虐待を与えた医師についてのレポート
  • ジャーナリストが自らデータを収集して分析している
  • 1999 - 2015年に医師に出された懲戒処分に関連する、医事委員会の10万件以上の命令を分析している

サン・センチネル紙

  • 警察の車のスピード違反を暴露

アルゴリズムの説明責任報道

  • アルゴリズムの説明責任報道を追求するのもデータジャーナリストの仕事
  • 説明責任報道の有名な例が プロパブリカ による 機械のバイアス
  • アメリカの裁判所の量刑判断にはアルゴリズムが使われている
  • このアルゴリズムにはアフリカ系アメリカ人に不利になるバイアスがある
  • 元のデータに偏りがあったためにこうなった
  • ガーベジ・イン・ガーベジ・アウト の原則

第2部 コンピューターには向かない仕事

第5章 お金のない学校はなぜ標準テストで勝てないのか

けっきょく教科書を読むのが一番いい

  • Meredith さんは、息子の宿題を手伝っていた時に、自宅で教科書の中身を確認する方法がないことに気づく
  • 人工知能ソフトウェアを開発して、教材データを収集した
  • 教師や生徒と話し、いくつかの学校を回って、生徒がテストを突破するには、教科書を読むのが一番いいと気づく

アメリカの教育評価制度

  • アメリカの標準テストは、CTBと呼ばれるマグロウヒル、HMH、ピアソンの3社が作っている
  • HMHの2013年の収益は13億8000万ドル
  • テストの採点は、本質的な部分よりはCBTによって設定されてた基準になっている
  • 幼稚園〜高3までの教科書は、教師が生徒に与えることになっている
  • Meredithが調べたところ、学校は必要な冊数の27%しか持っていなかった
  • 少なくとも10校が1冊も教科書をもっていなかった
  • 教科書の管理システムの問題もあり、ある学校ではシステム上は0冊だが、実際には24冊以上の教科書があった

人間が原因となる問題

  • Meredithは、システムにデータが入っていないのを人間の問題として捕らえている
  • AlphaGoの章にもあったように、 すべてのデータは人が何かしらの形で集計に関わっている
  • フィラデルフィアでは、学区の責任者から各校に年度始まりに教科書のリストが送られていた
  • そのWordファイルにはチェックボックスがあり、学区側では目録の管理はしていない
  • 全学区を網羅した電子システムがあるはずだが、それは使われていないみたい
  • 上記のWordを受け取り、エクセルで管理しているが、そのエクセルは共有されていない
  • このやり方によって、各校のもっている教科書の管理ができなくなっている

ビル・ゲイツの工学的なアプローチ

  • ビル&メリンダ・ゲイツ財団は、学区ごとの教育の違いの是正に取り組んでいる
  • アメリカの全州共通のコアスタンダードの導入を進めた
  • 設計図にしたがって進めていく工学的なアプローチだが、うまくいっていない(?)
  • Meredithさんによると、教育は社会問題の側面が多い
  • 政治や活動家、教育委員会により、工学的なアプローチだけではうまく物事が進まない

第6章 人間の問題

テクノロジーと社会の関わり

  • 教育と技術界隈は少数の人の影響を強く受けながら発展してきた
  • 技術システムの設計にも少数の信仰がこびりついている

自宅でのプライバシーを侵害したドローン

  • 2016年に初めてストリーミング・ビデオ技術を搭載したドローンが発売された
  • ボッグズというアメリカ人がメリデス家の庭の近くまで飛ばした
  • メリデス家の父親は銃でドローンを銃で撃ち落とし、ボッグズとトラブルになった
  • プライバシーの侵害をしたのはボッグズだったが、銃を持っているという理由でメリデスが逮捕された
  • Meredith はプライバシーの保護が事前に検討されたなかったことを批判している

Tay

テックコミュニティー媒介者 マーヴィン・ミンスキー

コンピュータの先駆者アラン・チューリング

  • アラン・チューリングミンスキーと同じプリンストン大学で論文を書いている
  • チューリングは気難しく、社交性のない人間だった
  • いったん親しくなった人によっては愉快で面白い人間だったが、基本的には人付き合いが苦手だった
  • チューリングの表面的な部分よりも人間的な部分を重視する点は良い点でもあるが
  • 社会的習慣よりも数学的能力を重視するという欠点でもあった

計算の歴史

  • そろばんから始まって、歯車式の「ステップ・レカナー」そしてパンチカード式の計算機へ
  • 計算機は進歩はしていたが、産業革命期には計算手の少なさがボトルネックになっていた

教育機械が白人男性に限定されていた時代

  • 計算手が限られていた時代、働き手は白人男性に限られていた
  • 女性は投票権も認められていなかった時代で、数学の教育を受けた人はごく少数だった
  • アフリカ系アメリカ人は教育の権利が認められていなかった
  • Meredith はいまだに教育へのアクセスは平等にはなっていないと考えている

第7章 機械学習――ディープに学ぶ

テクノロジーに多様性を取り込むためには

  • 5章で書かれていたように、いまのテクノロジーは少数のバイアスが反映されている
  • 公平なテクノロジーを実相するためには、今よりも多様な意見を取り入れる必要がある
  • 問題点は、テクノロジーには正確に理解するのが難しい側面もある
  • ランドール・マンローのオンライン漫画で公開されいてる例
  • 写真が国立公園で撮影されたか判断するのはGISで簡単に判断できるが、写真に取りが写っているかの判断は難しい
  • こういった、簡単にできることと事実上不可能なことの判断は、AIにおいても難しい
  • そのため、テクノロジーを正確にわかりやすく伝える人(たとえばデータジャーナリスト)が必要になる

テクノロジーの理解を難しくするもの

  • JavaJavaScript(両方ともコーヒーが語源になている)など、概念と名称が一致していないものもおおい
  • 機械学習 という言葉も、機械が 学習する というニュアンスのために、言語的混乱を含んでいる

機械学習がどういうものか

  • 機械学習が言語的には新しいもののため、コンセンサスが取れておらず色々な定義がある
  • Meredithさんのおすすめが、カーネギー・メロン大学のトム・M・ミッシェルの定義

われわれが特定のタスクT、性能尺度P、ある種の経験Eについて機械が学習すると呼ぶのは、そのシステムが経験Eののちに、タスクTにおいてパフォーマンスPを確実に向上させる場合だ。われわれがT、P、Eをどのように規定するかに応じて、この学習タスクは、データマイニング、自律的発見、データベース更新、例示プログラミングなどの名称で呼ばれる。

  • この定義からも分かるように、機械学習における学習は 知性を意味しない

機械学習の種類

機械学習が動作するフロー

  • 機械学習が作られるおおまかな流れが、データ例含めて説明される
  • タイタニックの乗船客の生存率の予測が、背景含めて知っている人が多いということでポピュラーらしい
  • 簡単な Python のコードで、ライブラリを使いながらモデルを作る流れが説明される
  • タイタニックの例の場合、一番相関性が強いのが客室の等級で、等級が高いほど生存率が上がる
  • この点は社会的な問題も含んでおり、仮に保険会社が保険料を決める場合、高等級の方が保険楼が安いことになる

タイタニックの生存率において、機械学習でわからないこと

  • タイタニックの例では、実際の乗客のストーリーも紹介されている
  • 船が氷山に追突して沈没を始めたあと、船長はマードックととライトラーに救命ボートの指揮を命じた
  • 「女性と子供を乗せてボートを海におろせ」という指示が出された
  • マードックは右舷側ボートの指揮をとり、ライトラーは左舷側ボートの指揮をとった
  • 船長の命令の解釈がふたりで違ってた
  • マードックは女性とこどもが全員船に乗った後、男性も船に乗せた
  • 一方ライトラーは、ボートに空きがあったにも関わらず、女性と子供しか乗せなかった
  • この違いは生存率にも影響するが、機械学習の学習データに含まれることはない

第8章 車は自分で走らない

自動運転の難しさ

  • 機械学習は電子検索やシンプルな翻訳、シンプルなナビゲーションなどはうまくこなす
  • 十分な教師データを与えることで、特定のタスクはうまいことこなせる
  • 苦手な部分は通常は人間によってカバーされている
  • この章では、機械学習が苦手なタスクとして、自動運転について深ぼっている

Meredith の自動運転体験

  • 2007年にペンシルバニア大学工学部の自動運転技術チームの車を体験した
  • ボーイング社の駐車場でしたらしい
  • GPSやレーザー技術、ソフトウェアと車のつなぎこみなど、自動運転は複雑

一般的なソフトウェア開発では、持ち時間の4分の3はデバッグに費やされます。今回のようなプロジェクトの場合、全体の10分の9はデバッグをしている感じです

  • Meredith が試乗していると、自動運転が暴走して、壁に激突する寸前だった
  • ペンシルバニア大学の学生チームは、 Meredith のみの安全にはまったく無関心だった

DARPA グランドチャレンジ

  • 賞金ありの自動運転レース
  • 決まったコースの完走時間を競う
  • ペンシルバニア大学のチームは、周囲のものを近くするシステムだった
  • 障害物を認識して、それが何かを判断した後に迂回が必要かどうかを判断する
  • この方法の場合、カラーコーンや電柱など、分岐のパターンがめっちゃ多くなる
  • 一方、カーネギー・メロンとスタンフォードのチームは、仮想空間を作る方法を採用している
  • 走りながら周囲の環境を仮想空間内としてソフトウェア内に再現すうる
  • ものを認識せずに、その物体との衝突の可能性が高ければ迂回する、という方法をとっている
  • 後者の方法の方がうまくいった
  • ただ、この方法でも実際の道路にあふれている数多くのイレギュラーには対応しきれない

カエルの真似をして飛び跳ねながら幹線道路を渡る子供たちや、電動車いすに乗った女性が、道路の真ん中でグルグルとアヒルを追いかけ回す様子を、いかにも愉快そうに笑いながら紹介してみせた。

自動運転はまだ難しい

  • ウェイモ社のCEOのジョン・クラフシクによると、毎年自動車事故で120万人がなくなっている
  • そのうちの95%が人間によるミス
  • 一方、Meredithさんの主張では、完全な自動車運転の実現はまだまだ難しい
  • 例えば、自動車運転はレーダーで周囲を調べているが、雨や雪、ホコリの中では正常に動作しない
  • また、整備の行き届いていない道路上ではセンターラインに沿ってうまく走れなかったりする
  • GPSのハッキングも問題

第9章 「ポピュラー」は「よい」ではない

よい自撮り写真を撮るにはどうしたらいいか

  • テスラ社のAI部門責任者のアンドレイ・カルパシーによる研究
  • ソーシャルメディアいいね を基準にした写真の良し悪しの判定
  • 出来上がったものは、 若い白人女性 の写真がよいと判定されるようになってた
  • インターネットの基本的価値観の一つが 物事が計測可能でランク付けできる こと
  • いいね がおおいものは ポピュラー ではあるが よい とは限らない

検索の起源とキュレーション

  • ポピュラーよい よりも重要という考え方は、インターネット検索にも現れている
  • Google の検索は、被リンク数を基準にした PageRank から始まっている
  • いっぽう、 ウォール・ストリート・ジャーナル などは人によるキュレーションを行っている

3発大勝!ボーンマス戦に勝利で首位キープ

シティとの厳しい優勝争いが続き中、4試合ぶりの完封勝利!

シーズンもファイナルクオーターに入りかけているこのタイミングで、リヴァプールに嬉しい変化が見れたので、久しぶりにサッカーブログ。

 

結果も 3-0 と文句なしですが、それ以上に内容が良かった。

 

1点目はミルナーのコーナーからマネのヘディング。ケイタのトラップがうまい!

 

f:id:solt0723:20190210202447g:plain

 

得点を決めた直後にマネはこんなゴールも。シーズンのここに来てこの頑張りはホントに Liverpool らしい。

 

f:id:solt0723:20190210202814g:plain

 

 得点にはならなかったけど、リヴァプールらしいカウンターアタック。はじめのケイタのマネへのパスはこなれてきた感がある。ライスとパスを出したジニとケイタがここに来て調子を上げてきているのが優勝争いに向けてめっちゃ前向きな材料ではないでしょうか!

 

f:id:solt0723:20190210203026g:plain

 

そしてジニのおしゃれゴール!そんなことできたんか。

 

f:id:solt0723:20190210203805g:plain

 3点目。ケイタのパスも良いし、ボビーにはいつも驚かされる!スペースがないところにDFが誘導したように見えたけど、うまいことパスするなー。

 

f:id:solt0723:20190210204553g:plain


 ここから続く、バイエルンマンUとの試合にも勝ってほしい!

 

Coursera の GCP Specialization を毎週まとめていく (week1: GCP fundamental: Core Infrastructure)

ざっくり

  • 今の会社ではGCPをばりばり使っているので、GCP Specializationを受けてみる
  • GCP Specializationは全部で 4 つのコースで構成されている
  • 始めは GCP fundamental: Core Infrastructure
  • GCP とはなんぞや的なところから初めて、 App の構築や Debug、 Performance 監視とかを実際にやってみる
  • メジャーな GCP サービスの基本を教えてくれる
  • コースは動画とクイズ、実際に GCP コンソールを触るパートがある
  • 地味にすごいと思ったのは、実際に GCP を触るパートでは Coursera 用のテンポラリのプロジェクトを毎回発行する
  • 実感制限でプロジェクトが使えなくなるようになっていて、けっこうがっつり GCP 側でも開発が入ってそう
  • ダイアン・グリーンの手動で GCP の Coursera が整備されたらしい(ありがとうダイアン)
  • ML Specialization が終わっていないけどそれは気にしない

Google Cloud Platform Fundamentals: Core Infrastructure

  • 始めのコースは Core Infrastructure

Introducing Google Cloud Platform

  • GCP の超導入
  • GCP では、Computing, Storage, Big Data, Machine Learning の 4 つのサービスをがある
  • このコースでは、この中の Computing, Storage に加えて Networking のサービスを紹介する f:id:solt0723:20181215190929p:plain
  • 米国標準技術研究所なるところが定義した Cloud Computing の定義がこの画像の5つ
  • Cloud Computing が普及した背景には colocation によって、データセンターの効率利用の流れがあった
  • また、仮想化によって、よりハードウェアを効率的に利用できるようになったのもあった
  • ただ、Google は仮想化に限界を感じていたらしく、コンテナを利用することに
ここで出てきた 「いずれは、企業は業態や規模にかかわらず、テクノロジー 特にソフトウェア)で差別化を図れるようになる」 というのが印象に残った。グーグルっぽいなー。
  • IaaS や PaaS は仮想化によって生まれた
  • データセンター形式でストレージやネットワークを提供するのが IaaS
  • アプリケーションロジックに対してインフラを提供するのが PaaS
  • GCPの構成として、最も粒度が大きいものが デプロイエリアの Zone
  • GCPではベンダーロックを避けるために、オープンショースのミドルウェアを積極的に利用している

Module introduction

  • GCP では IM と IAM を使って、アカウントの権限管理ができる
  • GCP 管理には4つの interface が用意されている f:id:solt0723:20181222234503p:plain
  • このコースでは console と CLI を主に使う

The Google Cloud Platform resource hierarchy

  • GCP のリソースやプロジェクトの階層構造はこんな感じになっている
    f:id:solt0723:20181227125952p:plain
    GCP のリソース階層構造
  • プロジェクト命名についての解説もある
    • Project ID はグローバルにユニーク
    • Project name は重複可能
    • Project number はグローバルにユニーク
  • Project ID は読みやすく識別しやすいものが良い
  • フォルダーはプロジェクトに所属していて、 n:n の関係で紐づく

Interacting with Google Cloud Platform

  • GCP では4つのコンソールの操の方法が用意されている
    f:id:solt0723:20181227194226p:plain
    4つのコンソールの操作方法
  • この商では課題として、実際に GCP 環境に LAMP アプリをデプロイしてみる
  • Coursera で Cloud Market Place という実際に GCP を動かすことができて、そのサイト内で採点までしてくれるページがある
    f:id:solt0723:20181227225404p:plain
    こんな感じのサイトが用意されている
  • GCP を触れる時間には制限があって、その時間内に課題を終わらせる必要がある

Virtual Private Cloud (VPC) Network

  • GCP でのアプリケーション開発の第一歩として、VPNをはる
  • VPN は project に所属している
  • GCP が提供する VM では OS やら CPU のスペックやらを選ぶことができる
  • VM のconfig はスナップショットにとってバックアップ可能
  • 仮想CPUと仮想メモリの数には上限がある

Important VPC capabilities

  • GCPVPC では firewall の管理を気にする必要がない
  • アクセスが増加すると VM は自動でオートスケールする
  • アクセウの振り分けや、エンドポイントの一括管理はロードバランスがしてくれる
  • NDS についてもこの章で紹介されている
  • Google が無料で提供しているサービスで最も有名なものが 8.8.8.8 のドメインらしい(知らなかった)
  • Cloud DNS では DNS を利用できる
  • Cloud CSN はロードバランサーHTTPSを設定したら CDN にチェックするだけで利用できる
  • GCPVPN は interconnect のオプションがあって、オンプレの環境と接続できる

実際に触ってみるパート

  • GCP console の実践パターン
  • GCP console と command line を使って VM をいくつか作ってみる

Google Compute Engine and Networking (クイズ)

Cloud Storage

  • GCS はファイルシステムではない
    • 全てのデータをオブジェクトとして扱うバイナリラージオブジェクトストレージ
    • ファイルにはURLが割り当てられ、 GCS 上でファイルを編集することはできない
    • デフォルトで HTTPS の暗号化がされる
  • オンラインとオフラインでデータをインポートできる
  • バケット名はグローバルにユニーク
  • コンテンツへの権限管理では、 IAM に対して Access Control Lists を設定する
  • GCS のファイルは immutable で、ファイル自体を編集するのではなく、バージョン管理をしている
  • オブジェクトに対しては LLT を設定できる

Cloud Storage interactions

  • ストレージクラスでは、オブジェクトにアクセスする頻度やSLAからクラスを選択できる
  • f:id:solt0723:20181230110953p:plain
    クラス毎の性能
  • nearline クラスでは、頻度の他に、データにアクセスする毎にデータ容量に応じて費用が発生する

#### Bigtable - Bigtable は NoSQL データベース - HBase(Hadoop のNoSQL データベース)と同じ API が用意されている - Bigtable ではデータアクセスの方法ががいくつか用意されている - application api - HBase rest server か Hbase クライアントを使った Java サーバーからアクセスできる

Cloud SQL and Cloud Spanner

  • Cloud SQL はマネージドな RDB
  • MySQLPostgreSQL が使える
  • Vertical に read/write を拡張されて、 Horizontal に read が拡張される
  • Cloud SQL は App Engin, GCE, 外部サービスから接続できる
  • Cloud Spanner は Horizontally scalable な RDBMS

#### Cloud datastore - フルマネージド NoSQL データベース - 自動的にレプリケーションとシューティングをしてくれる - レプリケーションはマスタのデータをスレイブのデータベースにコピーする - シャーディングはデータを分割して複数のサーバに保存する

#### Comparing Storage Options -

f:id:solt0723:20181230190834p:plain
GCPのストレージサービスの比較表
- 各ストレージのユースケースが紹介されている - Datastore は semi-structured な App Engin のサービスで使うのにもいいらしい - BIgtableスループットが多い AdTech みたいなイベントの裏側で動かすのにいい - Storage は画像とかメディアファイルなどのバイナリデータを置くのに適している

GCP Fundamentals: Getting Started with Cloud Storage and Cloud SQL

  • GCP の実習章
  • GCP のコンソールを触りながらCompute Engine と Cloud SQW、Cloud Storage を動かす

Google Cloud Platform Storage Options (クイズ)

  • 一回間違えたので調べた内容をメモしておく
  • Cloud Storage のバージョニングはデフォルトではオフになっている

Module Introduction

  • ここから container と Kubernates engine の説明に入っていくらしい
  • Kubernatees Engin を使って、 Continer のデプロイを管理する方法を学んでいく

What are Containers?

  • Container は Hypervisor と同じく、VM のひとつ
  • f:id:solt0723:20190101195316p:plain
    Conainer と Hypervisor の違いはこんな感じ
  • Container を使うと、1つのOSを動かすのに1つの VM を動かす必要がないので、リソースの節約になる
  • Kubernates engin は docker container の runtime を利用している
  • f:id:solt0723:20190101201147p:plain
    container を使うメリット

Kubernetes

  • container をスケーラブルな形で管理するためのオーケストレーションシステムが Kubernetes
  • multi-cloud で使いやすいらしい
  • Kubernetes では一緒にデプロイするコンテナを pod として管理する
  • デプロイをした後には、rolling して pod の中のコンテナを入れ替をえる
  • Kubernetes がデプロイスケジュールを管理している VM の node を cluster と読んでいる
  • node は zone をまたいで管理できる

Introduction to Kubernetes Engine

  • Kubernates でデプロイするには doker container image が必要
  • Cloud container builder では、 Cloud storage に 置いている code から docker images を置いておける
  • Container registry では docker image を Cloud storage に置いておける

実際に触ってみるパート

Module introduction; introduction to App Engine

  • ここから App Engine の説明が始まる
  • App Engine ではインフラのことを気にしなくてもいい
  • テンポラリにコードを動かして、コードのメンテだけすれば大丈夫
  • アクセスに応じて自動でスケールしてくれる
  • standard と flexible の2つの環境がある

Google App Engine Standard Environment

  • standard environment について
  • 割と簡単につかえて、dailyでfree枠がある
  • 料金も使った分だけ
  • runtime にはライブラリの読み込みとかも含む
  • SDKを使えば、ローカルで開発した後にデプロイできる
  • GO, PHP, Python, Javaを使える
  • 別の言語を使いたければ、flexible enbironmentにする

Google App Engine Flexible Environment

  • flexible environment について
  • flexible では App Engine 側で VM を用意してくれる
  • そのお陰で、SSH 接続が使えたりする
    f:id:solt0723:20190101215414p:plain
    違いはこんな感じ

Google Cloud Endpoints and Apigee Edge

  • Cloud Endpoint では API のアクセス管理とかができる

実際に触ってみるパート

  • App Enginde でアプリを動かして、その後に App Engine を廃棄する

Development in the cloud

  • ここから Cloud function の説明が始まるらしい
  • Cloud functon では JavaScript のコードを特定のトリガーで実行できる

Deployment: Infrastructure as code

  • GCP にはデプロイを管理する Deployment Manager がある
  • Infrastructure as a Code の思想で設計されているもの
  • YAMLPython のコードでデプロイを管理できる

Monitoring

  • Stackdriver は GCP のモニタリングとロギングのツール
  • Stackdriver で貯めたログは BigQuery とか GCP の他のサービスにエクスポートできる

実際に触ってみるパート

  • Development Manager を作って編集してみる
  • Stackdriver を使って VMアクセスログを見る

Introduction to Big Data and Machine Learning

  • ここから、BigData と機械学習に関連するサービスに入っていく
  • GCP サービスでは big data 関連のサービスをサーバーレスに使うことができる
  • Google もよるサーバーレスの定義 "You don`t have to worry about provisioning computing instance to run your job"
  • Google のbig data 関連のサービスにはこんな感じのものがある
    f:id:solt0723:20190103203710p:plain
    big data 関連のサービスはフルマネージド
    (())

Google Cloud Big Data Platform

  • Cloud Dataproc は GCPO 上で Hadoop の Spark/Hive/Pig を使うためのサービス
  • 90 sec で動作するようになる
  • 手動でスケールできて、モニタリングには Stackdriver が使える
  • 分単位の課金なので使った分だけ費用が発生して、preemitible instance を利用すると80%安くなる
  • Spark か Spark SQL でデータを分析できる

#### Cloud Dataflow - pipeline の中でデータを変換したり同期したりできる(?)

BigQuery

  • クエリで大量のデータを高速に解析できるよ
  • 月ごとに無料枠がある

Cloud Pub/Sub and Cloud Datalab

  • 非同期にメッセージを送信できるサービス

Google Cloud Machine Learning Platform

  • いろいろな用途で機械学習が使えますよという説明
  • 主な用途として、翻訳やレコメンド、画像解析、回帰や分類、異常検知がある

Machine Learning APIs

  • 機械学習で用意されているAPiの解説
  • Cloud Vision API では画像のラベル付ができる
  • Cloud Speech API ではリアルタイム翻訳や音声コントロールができる
  • 80以上の言語に対応しているらしい
  • Natural Language API ではテキストの構造を解析したり、文中に関連する記事やブログを探したりができる
  • 英語やスペイン語、日本語などに対応している

#### 実際に触っていみるパート

CourseraのML Specializationを毎週分まとめていく(week 3 : Shallow Neural Network)

Neural Networks Overview

  • この週はニューラルネットワークを構成する方法を学んでいく
  • この章では、その概観が説明される
  • f:id:solt0723:20180820214533p:plain
  • これまでに使っていた computing graph はこんな感じ
  • f:id:solt0723:20180820214623p:plain

  • computing graph をニューラルネットワークの図にするとこんな感じになる
  • この場合、インプットから出ている矢印にwやbが含まれている
  • f:id:solt0723:20180820214852p:plain

  • 計算の流れはこういう感じになる
  • また、バックプロパゲーションは赤字の流れでする

Neural Network Representation

  • この章では、ニューラルネットネットワーク図のレイヤーやノードのラベリングを学んでいく
  • f:id:solt0723:20180820221003p:plain

  • x を input layer、シグモイド関数に通した後のレイヤーを output layer という
  • また、input と output に挟まれたレイヤーを hidden layer といい、hidden layer は複数層ある場合もある
  • トレーニングセットには input layer と output layer を入れておくと学習ができる
  • f:id:solt0723:20180820222405p:plain

  • 各レイヤーのすべての要素は a で表すことができるようになっている
  • 上付の数字でレイヤーの深さを、下付きの数字でレイヤー内での要素番号が表されている
  • ちなみに、input layer は そのまま x が a になる
  • また、ニューラルネットネットワークの層には input layer は含まれないので、この図の場合には 2層のニューラルネットネットワークということになる
  • この場合、wは(4, 3)の行列になり、bは(4, 1)の行列になる

Computing a Neural Network's Output

 

 

CourseraのML Specializationを毎週分まとめていく(week 2 : Neural Networks and Deep Learning)

Binary Classification

Logistic Regression

  • ロジスティック回帰は二項分類の手法の1つ
  • f:id:solt0723:20180806004118p:plain

  • 上の式の意味は、y = xが与えられたときに"y=1"となる確率
  • yのハットは、予測値として出力されたyを表している
  • 2項分類では、yが1となる確率を算出する
  • f:id:solt0723:20180806004702p:plain

  • 上記のような2次関数では、yが0~1にならない
  • 関数をシグモイド関数に通すことで、yが1になる確率に変換することができる
  • 上記のzをシグモイド関数に通す
  • ちなみに、wTのTは天地の意味
  • f:id:solt0723:20180806010931p:plain

  • ちなみに、bとwはθで表記されることもあって、その場合はこういう感じで割り振られる

Logistic Regression Cost Function

  • この章では、bとwを求めるためにコスト関数を定義する
  • f:id:solt0723:20180818124428p:plain

  • 改めてこのコースでの表記を確認
  • 上付のiはi番目の教師データであることを表している
  • f:id:solt0723:20180818124544p:plain

  • logistic regressionではこんな感じでm個の教師データがあるときに、yとyハット(予測値)が同じになることを目指す
  • f:id:solt0723:20180818124902p:plain

  • 上記のL()はコスト関数(loss function)を表す
  • コスト関数は、yハットとyの差分を定義する
  • すごく一般的には、上記のようなyハットとyの差分の2乗をコスト関数とすることもできる
  • f:id:solt0723:20180818125104p:plain

  • ただし、機械学習の学習過程では、wやbを上記のように増減しながら最適な値を探すのだが、その時に局所解(グラフの谷になっているところ)に行き着いてしまうことがある
  • なので、このコースでは差分の2乗ではなく、同じような意味合いを持つ別の関数を利用する
  • f:id:solt0723:20180818125731p:plain

  • このコースでは上記の関数を利用している
  • この式の意味するところについて、実際にy=1を代入して説明されている
  • y=1の時、式の右半分は0になるため、- logyハット のみ残ることになる
  • この時、yとyハットの差分を少なくするということは、L() はゼロに近い方がいいので、-logyハットは0に向かうことになる
  • -logyハットが0に向かうということは、yハットは1に近づくということで、この式は正しく動作しそうということになる
  • f:id:solt0723:20180818153058p:plain

  • 次に、すべてのmのL()を合計することで、コスト関数が完成する

Gradient Descent

  • この章では、コスト関数を利用して、どのようにbとwを学習していくかを学ぶ
  • 学習は最急降下法でおこなう
  • f:id:solt0723:20180818185911p:plain

  • コスト関数を視覚化するとこんな感じ
  • この点を動かして、最もコストの低いglobal optiminamを探す
  • 局所解がない状態になっている
  • 最急降下法では、コストが最低になるように、最も急な勾配を選択して下っていく
  • f:id:solt0723:20180818190857p:plain

  • 上記の式で、wの更新を繰り返すことで最低なwを探していく
  • αは任意のパラメータで、大きいと学習毎の点の移動幅が大きくなる
  • dwは微分式なので、傾きが正の場合にはwがマイナス方向に移動して、傾きが負の場合にはプラス方向にwを動かすことを意味している

Computation graph

Derivatives with a Computation Graph

  • この章ではバックプロパゲーション微分工程が概念的に何をしているかについて解説がされている
  • バックプロパゲーションは抽象的でまだ完全に理解しきれていない
  • ビデオを見た限りの理解では、バックプロパゲーションは「computing graphのそれぞれのインプットノードが、アウトプットノードに対してどれくらいの影響があるか」を調べている
  • f:id:solt0723:20180819134406p:plain

  • このようなcomputing graphで考える
  • f:id:solt0723:20180819134938p:plain

  • vが0.001上昇した時で考えると、Jは0.003上昇する
  • f:id:solt0723:20180819135039p:plain

  • これを微分式で考えると、上記のような式になり、vからJへの傾きは3となる
  • 同様にaがJにどの程度の影響があるかを考えると、aが0.001増加したときにJは0.003上昇するため、傾きは3となる
  • bとcにも同様のことを行う

    f:id:solt0723:20180819140036p:plain

  • computing graph中のいずれかの要素がJ(final output variables)に対してどれだけの影響があるかを、"dvar"で表記する
  • aのdvarはdaという感じ

Logistic Regression Gradient Descent

  • この章でgradient discentの手法を学んでいく
  • f:id:solt0723:20180819143732p:plain

  •  

    改めて、gradient discentで使うcomputing graphはこういった形になっている
  •  真ん中の箱では、Zを損失関数に通している
  • gradient discentでは、loss関数が最小になるwやbの変数を探す
  • 前章では個別のインプットの微分を行なったが、これからは全体の微分を行う方法を学ぶらしい
  • まずは、1つのデータセットに関して見ていく
  • f:id:solt0723:20180819154051p:plain

  • シグモイド関数をaで微分すると、こんな感じの式になる
  • f:id:solt0723:20180819154351p:plain

  • dzはこんな感じにa-yとなる
  • ここで、azは前章で確認したように、da/dzではなくdL/dzである

Gradient Descent on m Examples

  • 前章では1個のデータ・セットでgradient discentを行う方法を確認した
  • この章では、m個のデータセットに関して見ていく
  • この章になるとバックプロパゲーションますます分からん感じになった
  • f:id:solt0723:20180819161022p:plain

  • 改めて、コスト関数は上記のような式で表される
  • f:id:solt0723:20180819161836p:plain

  • gradient discentでは前章でしたように、微分をバックプロパゲートしていく
  • m個のテストデータに関して、w1で微分を行う場合、上記のような式になる
  • この時、w1に関しては、m個のテストデータが考慮されていない
  • f:id:solt0723:20180819162927p:plain

  • "Gradient Descent"の章で見たように、wやbは上記の式で更新していくのだが、次にこのdw1などの計算の仕方が説明されている
  • f:id:solt0723:20180819163103p:plain

  • dw1などはこういった感じの手順でも求めていく
  • (ちなみに、前章で確認したように、dz = a - y となる)
  • この週のこれ以降は、ディープラーニングというか、pythonの基本的な使い方についてなので省略する