機械学習:技術的負債の高金利クレジットカード

Posted on 2018-05-04(金) in Machine Learning

Google で機械学習システムの開発に携わる D. Scully 氏らによる

Machine Learning: The High-Interest Credit Card of Technical Debt (機械学習:技術的負債の高金利クレジットカード)

という論文。機械学習は、複雑なシステムを素早く開発するにあたって非常に強力なツールとなるが、それと同時に、 大きな技術的負債(メンテナンスコスト)を抱えるリスクがある。そのリスク要因と対処法についてまとめたのが本論文。

発表当時、日本でも少し話題になったので、日本語で検索するといくつか翻訳を目にすることができますが、 ここでは、あらためて抄訳を試みるとともに、読む上で重要となる単語・表現を最後に紹介したいと思います。

概要

機械学習は、複雑なシステムを素早く開発するにあたって非常に強力なツールとなるが、これらのメリットがタダで 享受できると考えるのは危ない。機械学習を使う場合、システムのレベルで非常に大きな技術的負債(メンテナンスコスト) を抱えるリスクがある。

  1. 機械学習と複雑なシステム

    • 機械学習パッケージは、通常のコードとして複雑さの問題をはらんでいるのと同時に、 システムレベルで「隠れた」技術的負債を抱える恐れがある。

    • 本論文では、機械学習のコードと、大きなシステムレベルとの間の相互作用に焦点を当てる。 ここに隠れた技術的負債が溜まりやすい …


Continue reading

「あなたはどのようにして英語が流暢になりましたか」に対するHacker Newsのコミュニティの反応

Posted on 2018-04-29(日) in English

Hacker News にて、Ask HN: How did you become fluent in English? 「あなたはどのようにして英語が流暢になりましたか」というスレッドが人気になっていたので、少し前のことですが、人気のコメントをかいつまんで紹介したいと思います。

(Hacker News は、トップページに上がってくる記事と議論の質が高いので良く見ています。英語で技術系のトレンドを追いたい方は要チェックのサイトです。)

以下、「どのようにして英語が流暢になりましたか?」の回答:

  • たくさん読む。Reddit や Hacker News, Slaskdot など。本、小説も。たくさん聞く。映画を英語音声+英語字幕で見る。 たくさん書く。英語でメモを取る。コードのコメントを英語で書く。上達はあまり気にしない。時間がかかるが、続けていれば必ず効果は現れる。- bayindirh

  • 真似をする。読み書きを最初に習うと、ひどい訛りがつく。言語の全体を把握してから、読んだり文法を詳しく勉強する。 - robocat

  • 「間違ったことを言うかも …


Continue reading

YC サム・アルトマン氏による生産性を高めるアドバイス

Posted on 2018-04-08(日) in Productivity

Y Combinator の代表サム・アルトマン氏による「生産性」と題されたブログ記事。弱冠三十代にして Y Combinator の代表を勤め、OpenAI の創立に関わるなど、本人も書いているように、生産性が非常に高い人物の一人であることは言うまでもありませんが、生産性を高めるためのアドバイスが詳細に書かれています。

本人の生産性や哲学等については、以前のインタビュー などでも断片的に語られていますが、こういってまとめて書かれていると、生産性を高めるための本人の考え方や試行錯誤がよくわかります。

  • はじめに

    • 「複利効果」は金融だけではなくキャリアにも魔法のような効果がある。
    • 小さな差であっても50年間積み重ねることで大きな差に。生産性を高めることには意義がある
    • 10%多くの仕事をこなし、毎日1%ずつ向上すれば、そうではない人との差は大きなものに
  • 何に取り組むか

    • 生産性のために最も重要なのは、正しいことに取り組むこと
    • 「すごい人」は、他の人にはない、世界に対する信念がある
    • 自分が話す人皆と同じ考えなら、それは悪い兆候
    • スケジュールの中に、考える時間を残す。本を読む、面白い人と時間を過ごす、自然の中で過ごす、など
    • 自分が好きなこと、大切だと思うことに取り組む
    • 他の人も、自分の好きなことをする時に最も生産性が高い。委譲する時はそれを意識する …

Continue reading

Googleの研究者が教える、良い機械学習プロダクトを実装するための43のルール

Posted on 2018-03-25(日) in Machine Learning

Google のリサーチ・サイエンティストである Martin Zinkevich 氏によって書かれた、機械学習を使った良いプロダクトを開発するためのコツを集めた記事。エンジニアが良い機械学習プロダクトを作るには、機械学習の専門知識が無いことに苦心するのではなく、得意なエンジニアリングの技術を活かすことが重要、というのが主な趣旨です。

紹介記事:Rules of Machine Learning: Best Practices for ML Engineering

  • はじめに

    • ほとんどの問題はエンジニアリングに関する問題である
    • 性能向上は、良い機械学習のアルゴリズムではなく、良い素性によってもたらされる
  • 機械学習の前に

    • ルール1. 本当に必要になるまで機械学習を使わない
    • ルール2. まず指標を設計、実装する
    • ルール3. ヒューリスティックが複雑になりすぎる前に、機械学習に移行する
  • フェーズI: 最初のパイプライン

    • ルール4. 最初のモデルはシンプルに。インフラをまず整える
    • ルール5. インフラを機械学習とは独立にテストする
      • 素性は正しく計算できているか。モデルは訓練環境とテスト環境で同じ値を返すか。
    • ルール6. パイプラインをコピーする場合は、欠損データに気をつける
    • ルール7. ヒューリスティックを素性に変換するか、外部的に扱う …

Continue reading

GAN (敵対的生成ネットワーク) チュートリアル @ NIPS 2016 まとめ - Ian Goodfellow

Posted on 2018-02-28(水) in Deep Learning

Ian Goodfellow による、GAN (Generative Adversarial Network; 敵対的生成ネットワーク) のチュートリアル。 Goodfellow 氏は GAN のそもそもの生みの親であり、教科書「Deep Learning」の著者としても有名。 2時間と、とても長い盛りだくさんのチュートリアルだが、分かりやすく、具体例やコツなどの満載なので、とても参考になる。

GAN (敵対的生成ネットワーク) チュートリアル @ NIPS 2016

  • 生成モデリング

    • 訓練データから確率分布の表現を得る
      • 密度推定
      • サンプル生成
  • なぜ生成モデルを研究するか

    • これまでの機械学習 1つの入力に対して1つの出力
    • 高次元確率分布は重要な対象
    • 強化学習の未来、計画をシミュレーションできる
    • 欠損値の扱い、半教師あり学習
    • マルチモーダル出力
      • 例:ビデオの次のフレームを予測
        • 多くの可能性があるので、ぼやけた画像になってしまう
      • 画像超解像技術
      • iGAN → 人間が線画を書くだけで、写真クオリティの画像を生成
      • 画像→画像翻訳 条件付きGAN
        • 線画→写真、航空写真→地図 …

Continue reading

ランディ・パウシュ氏による「最後の」タイムマネジメント講義 まとめ

Posted on 2018-02-15(木) in Productivity

膵臓がんで余命3〜6ヶ月であることを医師から宣告された後の「最後の授業」で有名なランディ・パウシュ教授が、バージニア大学で行った「タイムマネジメント」の講義。

一つ一つのテクニック等は、他の本などにも載っているたりするものが多いですが、ランディ・パウシュ教授が、残された限られた時間の中で執り行った講義なので、説得力があります。 話も上手く面白くので、一見の価値ありです。

  • はじめに

    • バージニア大学
    • 膵臓がんで余命3〜6ヶ月であることを医師から宣告される(3ヶ月前)
  • あらすじ

    • 実用的なトーク
    • ゴールをどう設定するか
    • 時間の無駄遣いをどう防ぐか
    • 上司・指導教官とどう接するか
    • 人にどう委譲するか
    • 生産性を上げるツールやテクニック
    • ストレスと先延ばし
  • 時間とお金

    • アメリカ社会は、お金に比べ、時間をうまく使うのが苦手
    • 自分の1時間の価値は?会社員なら、自分を雇うために年収の倍程度のお金がかかる
    • 時間を、お金と同じ物と見なして使うこと
    • 時間は二度と取り戻せない。お金は再度稼げる
    • 「時間の飢饉」食料を空輸してもアフリカの食糧問題は解決しない。根本的・システム的な改革が必要
  • 本の推薦


Continue reading

「深層学習と自然言語処理」オックスフォード大/DeepMind 講義まとめ(用語集付き)

Posted on 2018-02-08(木) in Deep Learning

「深層学習と自然言語処理」オックスフォード大/DeepMind 講義

オックスフォード大の「深層学習と自然言語処理」(Oxford Deep NLP 2017 course)の講義メモです。

講義ビデオ、スライド、講義の詳細等については、講義の公式ページを参照してください。

目次


Continue reading

英語で読む「Google のソフトウェアエンジニアリング」

Posted on 2018-01-01(月) in Software Engineering

Google にて10年以上ソフトウェアエンジニアとして働き、現在は最近では text-to-speech の研究に従事しているFergus Henderson氏による

Software Engineering at Google

という記事。Google のソフトウェアエンジニアリングのプロセスや文化が簡単にまとまっていて参考になる点も多いと思います。主要なポイントを簡単にまとめると:

  • 単一の巨大なリポジトリ。どのエンジニアでも(検索ランキングやセキュリティなどに関わる重要な部分を除き)自由にチェックアウトしてコードが読める。
  • 分散ビルドシステム Blaze (100〜1000台のサーバーで分散ビルド・テスト) キャッシュにより高速なコンパイルを実現。
  • 厳格なコードレビュー文化。メインのリポジトリにコミットするコードは必ずコードレビューを経なければいけない。
  • ユニットテスト、負荷テスト。
  • スタイルガイド、5つの公式言語(C++, Java, Python, Go, JavaScript)のサポート。
  • 頻繁なリリース(1,2週間ペース) リリースの自動化、ステージング環境における本番トラフィックを使った統合テスト。
  • リリース承認プロセス・ツール。
  • ポストモーテム:大きな障害が起きた時に書く文書。影響(クエリ数や経済的損失)、再発防止策などを書く。
  • 数年ごとにソフトウェアの書き直し。
  • 20 …

Continue reading