Yabu.log

ITなどの雑記

Coursera Machine Learning week1 その1

Week1内容

Machine Learningの定義

コンピュータプログラムが、ある種のタスクTと評価尺度Pにおいて、経験Eから学習するとは、タスクTにおけるその性能をPによって評価した際に、経験Eによってそれが改善されている場合である

機械学習 - Wikipedia

教師あり学習

学習内容のデータセットに答え(ラベル)が与えられているもの

  • X円で売れた家の面積
  • 悪性/良性の腫瘍サイズ

回帰:regression

連続値を扱う - 身長 - 金額 - 年齢 などを予測する

分類:Classify

離散値を扱う inputをN種類のoutputに対応付ける(分類)

  • ガンのタイプ
  • 満足/不満足

など

教師なし学習

学習内容のデータセットに答え(ラベル)が与えられていないもの

Clustering

例:Googleニュース news.google.com

Googleニュースでは各ニュースサイトが同じ事象を書いた記事を一つにまとめる機能がある。

ネットにニュースが転がっている状態ではラベルは直接ついていない=教師なし学習である

Non-Clustering

正確な定義の説明はWeek1ではなかった。

例:カクテルパーティアルゴリズム

この例の解説がなかなかん凄かった。二つの音源が混じった音声データを個別の音源ごとに分離させた音声データを2つ作る。これがOctaveなら一行のアルゴリズムで実現できる。

Octaveを使う理由

プロトタイプを早く作れるから。実際の事業でもプロトタイプをOctaveで作る例が多いらしい。

単回帰分析(Linear regression with one variable)

mの量をもつデータセット(x^{(i)},y^{(i)})から関数h(x)を作る

h_\theta (X)=\theta_0 + \theta_1(x)

この関数にinput(x)を代入すると、学習したデータセットをもとに 結果を予測できる。

目的関数(Cost function)

単回帰分析の関数h_\theta (X)=\theta_0 + \theta_1(x) のパラメーター\theta_0,\theta1の導出に利用。

二条誤差目的関数(Squared error function)

関数h\theta(x)が学習セットの(x,y)において、結果の誤差の2乗が最小になるような\theta_0,\theta1を求める。

他にも目的関数は数種類あるそうだが、単回帰分析の場合はこの関数が一番有効らしい。

学生の時に統計の授業で聞いた気がするが、2乗しているのは単に誤差の符号(+-)を揃えるのに絶対値を求めるより2乗する方が簡単だから、が理由だった気がする *1

J(\theta_0,\theta_1)  =\dfrac {1}{2m}\sum ^{m}_{i=1}\left(\hat{y} _i-y_i\right) ^{2} =\dfrac {1}{2m}\sum ^{m}_{i=1}\left( h_{\theta }\left( x^{(i)}\right) -y^{(i)}\right) ^{2}

*1:2乗することで基本的に正の数になる

さよなら2017年&2018年の目標とか

カレンダーを変える季節になりました。

f:id:yuyubu:20180103202646j:plain

  • タスクを書きすぎてる感じはするけど、まぁ年の初めだけ毎年張り切ってるアレなので温かく見守ってください
  • 2017年の振り返りを書こうと思いましたが、書いてる途中に内容を紛失してしまったので、断念。
  • 一応1月時点なので増減はあります*1

目指すところ

  • 基礎を補強したい
  • 学習習慣の定着
    • 自宅で学習できないので
  • 機械学習の入門
  • モダンな開発の実践(TDD等)
  • コードを沢山書く
  • 時間を意識する
    • 仕事も勉強も成果よりも時間を意識する
      • 去年は時間を忘れて本読んでて徹夜とかよくあったので

Todo

年間で消化したいタスク

  • PS4を売る
  • 関数型言語に挑戦(Scala,Haskelあたり2,3冊読めればいいかな)
  • (着手中)couseraのmachine learningのコースをやる
  • デスぺ取得
  • ネスペ/セスペ取得
  • 1つ以上のOSSプロジェクトへのコントリビューション
  • Chrome Extensionを一つ作る(やめてませんよ)
  • 英語の本を2冊読む
  • インフラ・セキュリティ系のコミュニティ主催の勉強会の参加継続

積読消化・読みたい本

WeeklyTodo

毎週の振り返り(週報)とかに使いたい

  • Cousera(コースを最低1単元を進める、動画一本、文章1本レベルの単位)
  • 毎日コードを書く(まぁスニペットでもなんでもいいんで...)
  • 勉強会に出る(毎週はきついかも)
  • 毎週1回はoutputを出す(Qiitaにそこそこのボリュームで)
  • 早寝早起き(12時まで)
  • 読書(購入済みの本は少しづつ進める,study plusとかで時間図るといいかな)

画像は今年と去年のオライリーカレンダー。東京を離れて田舎にいるときに気付きましたが、 表紙の絵は干支だったんですね。あまり正月とかイベントを意識していなかったので去年は気付きませんでした。

*1:ここに健康とか英語の目標をぶち込むかも

Effective Java 3rd に新規追加・削除された項目

Effective Java (3rd Edition)

Effective Java (3rd Edition)

英語版を買ってTDDの合間に読書中です。(どっちもJavaなのがいいですね) 項目数は + 14 -2 って感じで項目が12個増えて 90になりました。

introductionの節で新規追加された項目がまとめてありますが、項目名まで書かれていなかったので自分でまとめてみました 2ndと見比べてみると、消えてる項目もいくつか見つかりました。

1.7以降の知見が含まれるもの(基本新規追加)

Lambdas(Java 8)

  • 42 Prefer lambdas to anonymous classes
  • 43 Prefer method references to lambdas
  • 44 Favor the use of standard functional interfaces

Streams(java 8)

  • 45 Use streams judiciously
  • 46 Prefer side-effect-free functions in streams
  • 47 Prefer Collection to Stream as a return type
  • 48 Use caution when making streams parallel

Optionals(java 8)

  • 55 Return optionals judiciously

default method in interface(java 8)

  • 21 Design interfaces for posterity

try-with-resources(java 7)

@SafeVarargs(Java 7)

  • 32 Combine generics and varargs judiciously

Modules (Java 9)

  • 15 Minimize the accessibility of classes and members(新規追加ではなく継続)

introductionで特に紹介はなかったが増えているもの

消えたもの

  • 旧21 Use function objects to represent strategies
    • 42に統合された
  • 旧73 Avoid thread groups

雑感

  • Java 8,9の新機能はあまりきちんと触っていないので十分予習してから読みます。
  • 仕事でほとんどJavaを触っていませんが、過去にジェネリクスの可変長引数のシグネチャを作ろうとして詰んだことがあります 多分32 Combine generics and varargs judiciouslyはそれに関連しそうな気がします。

技術書の脱kindleは難しい

iOS/macOSiBooksの出来がかなり良い。KindleのクライアントもiOS版ならそこそこ使えるが、Mac版となるとかなり使いにくい。 また、今後より優れた電子書籍リーダーが出現した際には乗り換えるよう、プラットフォームに縛られないePubで揃えていきたい。

私が知ってる限り、翔泳社と日経以外の出版社は新刊はほぼDRMフリーのepubを売ってくれている。これはかなりありがたいことだと思う。

個人的に購入の優先度は

DRMフリーのepub > リフロー版Kindle > PDF > 固定レイアウトKindle > 紙の本

なので、なるべく脱Kindleを図りたいが、翔泳社はDBの分野が強いので、脱kindleは難しい。

Kindledrmフリーのフォーマットを売ってくれると一番ありがたいのだけれども。。。 プラットフォーム作って儲けようって会社だからそれはあり得ないか。

「熊とワルツを」を読んだ

熊とワルツを リスクを愉しむプロジェクト管理

熊とワルツを リスクを愉しむプロジェクト管理

リスク管理の古典です。ダンスの本ではありません。

なぜ読んだか

管理側より技術寄りのキャリアを進みたい私が、プロジェクト管理色が強いこの本を読んだ理由を書きたいと思います。

伊藤淳一さんのブログで紹介されていたから

伊藤さんのブログをよく参考にしていますが、もし中学時代の自分に本を薦めるならと題されたエントリーで一般書籍に混じって唯一の技術書として紹介されていたため、前から気になっていました。

別のテスト本でリスク管理について書かれた内容が理解できず、引っかかっていた

メンバーの体調不良や自然災害によるスケジュールの遅延をリスクとして書き出したことを「それはリスクではない」と怒ったエピソードが記されていますが、なぜ体調不良と地震はリスクの一部でないのか腑に落ちませんでした。

そのためリスク管理というものに対して引っ掛かりを感じていました。

Amazonサイバーマンデーセールで半額だったから

これが1番の理由雨だったりします。

上記のような様々な理由により本書を読むことにしました。

概要

本書の概要については訳者解説のこの1文が的確に表していると思います。

本書は、リスク管理の一部を面白おかしく取り上げた本と考えてはならない。本書で解説している内容は、リスク管理の王道であり、正統派である。リスク管理の基本的な考え方、アプローチ、網羅している技法、用語など、リスク管理のガチガチの専門書と比べて何の遜色もない。これ一冊を読めば、リスク管理のすべてを把握できるといってよい。これで、リスク管理の基本は学習できたと自信をもっていただきたい。

訳者解説より

リスク管理の王道を行く1冊ということですね。

リスク管理とは

私が本書から読み取ったリスク管理を以下にまとめます

それぞれリスク= 望まない結果の原因となるもの*1 について以下のアクションを行う

  • リスク発見:ブレーンストーミング&選別
  • エクスポージャー分析:実現する確率と影響を数値化、移行*2指標の定義
  • 危機対応計画:リスクが実現したときの対応シナリオを計画する
  • 軽減:危機対応措置の実施、移行前に取るべき対策の選定
  • 継続的な移行監視

なお、管理するリスクからコアリスクが漏れていないことを確認する。 コアリスクとはソフトウェア開発の歴史上、トラブルの頻度が高いものを 経験的に網羅したもの。

  • 内在的なスケジュールの欠陥
  • 要求の増大
  • 人員の離脱
  • 仕様の崩壊
  • 生産性の低迷

新しく知ったこと

ナノパーセント日

ベストエフォートでの納品日のこと、納品可能になる可能性を累積でグラフに表すと、初めて0%出なくなる日が来るはずです。この日をナノパーセント日と呼びます。

この日付を基準に、各リスクが移行する確率や移行時の遅れなどを期待値にして計算し、納品できる可能性を累積で表したグラフを書くことができます。

ここまでリスクが整理できていると、リスクのシミュレーションを元に現実的な納品可能日が確率的に可視化できます。

詳しくは書きませんが、ちゃんとしたプロジェクト管理はここまでしっかり見積もるのか、と少し感心しました。

価値も可視化する必要がある

なぜリスクを受け入れるか、というとその先にある価値を手に入れるためです。「これから作るシステムがどの程度重要か」という点はリスクと同じ解像度で可視化しておく必要があります。でないと、リスクを犯す理由を説明できなくなるからです。

価値はリスクを相殺する

潜在価値が高ければ重大なリスクでもとる価値がある。潜在価値が低いのなら、たいていのリスクはとるべきではない。

21章より

価値が低いとデスマーチになりがち

どうしても納期に間に合わせないといけないからデスマーチになる、ではなくて、大して価値のないものを作っているから人が追加してもらえない、 という視点でデスマーチを見ています。

全体を通しての感想

  • 前半は面白かったので1日で50%ほど読むことができたが、後半で読むペースが落ちた。私の経験不足のせいだと思う。
  • どうやら、臭いものに蓋をするのは日本特有ということではなく、アメリカでもそうらしい。
  • 現場では対処できないリスクはリストから外すような空気・圧力がかかる。封印されたリスクは移行時に再び向き合うことになる。そうならないためにリスク管理が必要。

疑問・わからなかったこと

  • 私の経験不足が原因で「そんなのアリ?」と思う箇所が何点もありました。
    • どうしても間に合わない場合は段階的に納品する、という方法が紹介されていましたが、一般的にこういうことが許されるのかどうかわからない。
  • 自分が作っているものの価値
    • 日頃から全く意識していませんでした。
    • 派遣とか委託で中抜きが何度も入ると、結局いくらでシステムを作っているのかわからない。

アジャイル開発

本書はウォーターフォール的なマネジメントを前提に書かれていますが、

工期が1年のシステムだと、1年前に欲しかったシステムしか作れない、だから仕様変更のための余裕は必ず必要と書かれています。

仕様変更は起きるのが当たり前、という態度が見れます。 備える、備えないの前に、それを吸収できないプロセス自体どうなんだ?と思いました。

アジャイル/XPのノウハウが成熟してきた今日にもし本書が書かれるならどういう記述になるのか気になるところです。

ちなみに本書がアジャイルの入門として進めていた本がこちらです

エクストリームプログラミング

エクストリームプログラミング

逸話(雑学)

気送管

気送管 - Wikipedia

著者のデマルコがフランスの中央市場の経理システムをシステム化したエピソードが掲載されていました。システム化する前は領収書を気送管と言われる管の中を風で飛ばして経理情報の集約をしていたそうです。

にわかには信じがたいのですが、昔はこんなものを使っていたのですね。

デンバー国際空港の自動手荷物処理システム

あとがきによるとソフトウェア工学の論文で非常によく取り上げられるマネージメントの失敗例だそうです。

agnozingdays.hatenablog.com

教養として知っておくといいことがあるかもしれません。。。

https://ja.wikipedia.org/wiki/デンバー国際空港

おまけ:なぜ「体調不良」と「震災」はリスクではないのか

体調不良

本書の中に答えはありませんでしたが、ググったら以下のようにありました。

メンバーの病欠は常に発生するリスクであり、PMはそれを想定して、従来からある程度の予想を立ててスケジュールに余裕を持たせているのであれば、あえてリスクとして管理する必要はありません。

「新版プロジェクトマネジメント標準 PMBOK入門」より

新版 プロジェクトマネジメント標準 PMBOK入門

新版 プロジェクトマネジメント標準 PMBOK入門

本書の内容に即して考えれば、コアリスクの

  • 人員の離脱
  • 生産性の低迷

あたりで管理するから、個別のリスクとしてあげなくて良い、ということでしょうか。

震災*3

7章で解説されています

万一発生した場合、プロジェクトどころではなくなるから。

*1:望まない結果そのものではない。例えばスケジュールの遅れはリスクが引き起こした結果そのものでありリスクではない

*2:リスクが実現すること

*3:7章には隕石の例で書かれていますが、一応天災つながりで

H29年ネットワークスペシャリスト雑感

個人の覚書なので読む価値はないです。

試験結果

落ちました。

  • 午前1:免除
  • 午前2:68点
  • 午後1:38点
  • 午後2:採点対象外

午前2

ここで勉強しました

ネットワークスペシャリスト過去問道場|ネットワークスペシャリスト.com

このサービス、ただなのにものすごくクォリティが高いと思う。

f:id:yuyubu:20171016230703p:plain

こんな感じで他の学習者の中での分布みたいなのも無料で見れる。

試験自体ですが、毎年のことだけど、基本的に過去問の使いまし。 IPAの試験を受けるたびに覚え直している、アーランの計算やポアソン分布とかが今回は覚えてなかったのでわからず、とても悔しい思いをしました。

上に貼った画像でわかると思いますが、 こんな私が一番ボリュームゾーンある5段にランクしてしまっているので、平均的な受験者は多分こんなもんだと思う

午後1

対策はとりあえず過去問2年分解いただけ・・・こんなんで受かるわけないですよね。

メールスペシャリスト試験とか言われてばかにされていた頃とは打って変わって*1メール関連の問題は一切出されませんでした。メールにかけて対策したひと残念。

午後2

の内、1問の選択でした。

無線LANの方を選びました。 まぁ午後1で落ちてるんで何やっても無駄なんですけどね。

落ちた言い訳など

技術検証が高コスト

デスぺならpostgressインストールして動かすだけで十分だけど、ネスペの学習領域を実践しようとすると金がかかる。高機能なルーターが中古で2万弱とかきつい。*2多分インフラ系の案件に回れれば個人で購入できない機材を触って経験値をあげることもできるのだろうけれでも。

仕事に関係ない

モチベーションを保つのがきつい。Wifiなどの日頃から生活で関わりのある箇所は勉強しがいがあるけど、VLANとかメールサーバーの設定とか多分一生やらないと思うしモチベーション保つのがきつい。

周りに相談できる人がいない

インフラエンジニアは別の職種だし、社内・現場にいないし手探りで学んでいかないといけない。これは受験前にほとんど意識できていなかった。

ところでデータベースに関しては。。。

  • 技術検証がタダでできる
  • 仕事に直結
  • 周りに相談できる人が居まくる

四月のデータベーススペシャリストは落ちる要素ありませんね😁*3

総括

  • 全体的に勉強不足
  • 午前2の勉強は誰でもできる。
    • 良いサイトがあるので誰でも回数こなすだけで6割は超えると思う。
  • 午後の勉強法がわからない。
    • VLANとかVRRPとか個々の技術的な要素は学習してどうにかなると思うけど、それぞれが一緒に動いたときの挙動を考えろ、と言われると頭がパニックになる。
    • 多分過去問を解き疑問点をストックするのが大事
    • ストックした疑問点を日頃から意識しながら経験者と会話したり、技術書を乱読するのがいいかも?
  • 試験に特化した勉強は辛い。自分には無理。
    • インフラ系のスキルを上げつつ試験にも合格というスタイルが理想。
      • かなり贅沢で無駄な勉強方法だと思う
      • 本業が全く関係のない職業なのできついかも・・・

使った教材など

受かったわけではないけど、何かの参考に。全て私が悪いのです。

おうちで学べるネットワークのきほん

おうちで学べるネットワークのきほん

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

ネスペの基礎力 -プラス20点の午後対策 (情報処理技術者試験)

ネスペの基礎力 -プラス20点の午後対策 (情報処理技術者試験)

来年の対策

  • 過去問をきちんととく。
  • 過去問の解説の網羅率の高い教材を選ぶ*4
  • 実機を買ったりもらったのでしっかり動かす*5
  • ここまで書いといてあれだけど来年は受けないかも

受験者のブログのリンクなど

勝手にまとめました(追加予定)

simple-lifelog.com

午後問題を解説してくれるサイトは少ないので貴重。

ゼロからはじめるネットワーク自信ニキ – ねっとわーくじしんにきになりたい。

去年どのやつだけど、午前1免除なしの状態から1発合格。かなりすごいと思う。 勉強方法も合格にフォーカスしていて、捨てるところ取りに行くところをしっかり計画立てて勉強されている。

tsuzukilife.blogspot.jp

*1:大問3問中2問がメール関連なんて年もありましたね。

*2:せいぜい無料でできるのはパケットキャプチャ程度

*3:自分で退路を塞いでいくスタイル

*4:TOEICと違ってIPAの資格は過去問は公開されているので過去問の掲載を謳っているだけだと参考書としての価値はあまりない。午前午後ともに詳細かつわかりやすい解説こそ求められる

*5:勉強会でいただいたルーターは攻撃しまくったせいか壊れました

「第12回 セキュリティ共有勉強会」に参加

テーマはルーター。 各発表の概要と感想を書きます。グレーな内容は控えます。

DNSの設定

DNSの設定は可視化・共通化・冗長化が重要

  • 可視化
    • 手書きで権威、キャッシュ、外部からアクセスできる範囲がわかるように整理されて入れば良い
  • 共通化が重要
    • 設定が共有(共通化)できる端末を買う
      • 多少値が張ってもその価値はアリ
  • 冗長化
    • DNSが死ぬとネットが死ぬので重要
    • 冗長化していないと、メンテナンスがしんどい
      • セキュリティパッチ適応などが夜間にしかできない

DNSに関してはネスぺの午前で聞かれる程度の知識*1しかないので、新しく知ることばかりだった。例えば、著名なDNSサーバーのソフトは?と聞かれても一つも知らない。ちなみにBIND,Unbound,などがあるらしい。BINDのシェアが高く、そこを狙った攻撃も多いらしい。

私も過去にDNSが死んだのか、IPアドレスをブラウザのURLに打ち込んで運用で回避(笑)した経験がある。

可視化については、教えられたIPアドレスにtracerouteを打ちまくってネットワーク図を作る、ということを自主的にしたことがある。 もちろんtcp echoのreplayを返さないように設定しているノードの情報は取れないが、これがネットワークを触る権限がない自分ができる精一杯の範囲です。。。

Amazon Echoは常時録音している

Amazon Echoは「アレクサ、XXXして!」と声をかけると、 適当なアクション(天気の確認やタイマーのセット)をしてくれるパーソナルアシスタント。

「アレクサ」がトリガーになり、なんらかの音声コマンドを実行してくれる。

だがEchoはトリガーになるワード「アレクサ」を発音していない間も、常に音声データを声紋がわかる以上の音質で収集している。 wiresharkでMITM実演しようとされていたが、機器の調子が悪く肝心のアレクサがネットに繋がらなかった。

事例

アマゾンが録り貯めた音声データを警察に提出した www.gizmodo.jp

そういえばこの事例はRebuildで聞いたことがある。

感想

にわかには信じがたいが、すでに事例があるので、Echoが音声データを録り溜めているのは確実だろう。

トリガー部分の検出はローカルでできるかもしれないが、コマンド部分の自然言語処理ディバイスの性能上、ローカルではできないらしい。 だから音声データはサーバー側に送って解析する必要がある。

個人的には「アレクサ」の後の数十秒間以外は送信する必要ないのでは?と思うが。

世界中のカスタマーの生活音を録音し続けて保存できるような盗聴インフラはすごいと思うけど、それを保存するようなストレージって用意できるのか?

圧縮はしているのかもしれないが、警察から、こいつの何日ぶんの録音ファイルはよ、って催促されて出せるような形で録音しているなら相当すごい気がする。

攻撃の影響は広がる

詳細は書かないが、誰もが知っているサービスがDDOS攻撃を受けていたため、そこと同じインフラを利用していた発表者のメール環境などが死んだ、という話。事例として具体的すぎるので詳しくは書かない。

Anna Senpai逮捕

名前を知らなかったが、Mirai(Iotのbotnet構築ワーム)の作者がついに逮捕されたらしい。

飛び入りLT

デフォルトの管理パスワードで放置されているルーターが結構ある。

ちゃんとした業者から買いましょう。という指摘。

POSのセキュリティ問題

世間で使われているPOSのシステムの大部分はサポートの切れた Windows XP Embeddedであり、セキュリティリスクがある、との話。

トークはもう一個あったが内容がグレーなので書かない。

ほか

雑談や質疑応答時に気になった内容についてまとめます。

スマートフォンのセキュリティソフトはあまり役に立たない

DL時にハッシュをパターンファイルと比較するだけ。悪意のある動きの検出にはルート権限が必要なため、あまり役に立たないらしい。*2

「クローズドネットワーク」という言葉を過信してはいけない。

従業員が勝手に設定をいじったり、ネットワークに接続できる機器を無断で導入する事例などが紹介された。セキュリティの強度は一番弱いところで決まるが、行動力があるリテラシーのない人は非常に危険。

UPnP脆弱性の元。無効化するのが基本。

らしいです(詳細不明)

現場の環境が原因でネットワークが繋がらない、という現象は現職の方も苦労されている

  • 加湿器
  • 電波を遮断する素材
  • 従業員・客・掃除のおばちゃんがルーターの電源を勝手に抜く
  • LANケーブルを服掛けに使う

等。人が絡む部分はどうしようもない。

低スペPCの現場の話

自分のところだけだと思っていたら、低スペPCを使わされる環境は結構あるらしい。 個人的には作業効率云々よりも、モチベーションが下がるのでやめてほしい。

全体の感想

今回もかなり面白かった。

自宅で貰い物のルーターをいじって遊んでいるが、わからないことが多いので、ルータの知見を広げるために参加したが、ルーターにまつわる話はそこまで多くなかった気がする...

*1:Aレコードがどうのこうの、リゾルバと権威DNSとか。

*2:Androidの話です