無料で読めるオライリー公式のデータサイエンス・ビッグデータ e-books

Free Data Ebook Archiveというサイトを見つけた。オライリーが出しているデータサイエンスやビッグデータ関係の電子書籍が無料で読むことが出来る。名前とメールアドレスを入れるとePub, mobi, pdf形式でダウンロードすることが出来る。

ざっと見た感触としては、オライリーの動物が表紙になっている本よりかは短めの内容が多く、技術的なものもあるが理論よりも実運用を意識した内容のものが多いと感じた。

ちょっと気になったのは以下のタイトル。短めの本が多いようなので、機械学習関係の現状を把握したりシステムアーキテクチャの概要を掴んだりするのに良いかと思います。

・The Path to Predictive Analytics and Machine Learning
・Practical Artificial Intelligence in the Cloud(クラウド上でのAIアプリケーションの運用例など)
・Fast Data Architectures for Streaming Applications (ストリーミングデータに対するアプリケーションのアーキテクチャ構成例が挙げられている)

「Machine Learning – A Probabilistic Perspective」第6章を読んだ

前回の続き。難しくなってきたが細々と読み続けている。これを読み切ったら大抵の機械学習本は読めるようになるのではという感覚がある。

第6章は、Frequentist statistics 頻度統計について。この章は比較的知っている内容が多いので読みやすかったと思う。

目次は以下の通り。

  • 6 Frequentist statistics
    • 6.1 Introduction
    • 6.2 Sampling distribution of an estimator
      • 6.2.1 Bootstrap
      • 6.2.2 Large sample theory for the MLE *
    • 6.3 Frequentist decision theory
      • 6.3.1 Bayes risk
      • 6.3.2 Minimax risk
      • 6.3.3 Admissible estimators
    • 6.4 Desirable properties of estimators
      • 6.4.1 Consistent estimators
      • 6.4.2 Unbiased estimators
      • 6.4.3 Minimum variance estimators
      • 6.4.4 The bias-variance tradeoff
    • 6.5 Empirical risk minimization
      • 6.5.1 Regularized risk minimization
      • 6.5.2 Structural risk minimization
      • 6.5.3 Estimating the risk using cross validation
      • 6.5.4 Upper bounding the risk using statistical learning theory *
      • 6.5.5 Surrogate loss functions
    • 6.6 Pathologies of frequentist statistics *
      • 6.6.1 Counter-intuitive behavior of confidence intervals
      • 6.6.2 p-values considered harmful
      • 6.6.3 The likelihood principle
      • 6.6.4 Why isn’t everyone a Bayesian?

著者はベイジアンなアプローチを取った方が一回限りのイベントなどから上手くモデルを構築出来ると述べられているが、頻度主義の統計に慣れしたんでおくことは機械学習の分野で広く使われているため有用であると述べている。

頻度主義とベイズ統計の違いは、頻度主義がデータはランダムでありパラメータが固定されていると考えるのに対して、ベイズ統計ではデータが固定されており、得られたデータから最尤推定によりランダムなパラメータを確定させる、ということです。

最後の6.6節では、頻度統計の望ましくない振る舞いであるpathologyが述べられている。信頼区間やp値に関する問題点などが挙げられる。最後になぜ皆がベイジアンではないのか?という話が書かれており、その中で20世紀はノンベイジアンの時代であったが、21世紀はベイジアンの時代になると述べられている。これが正しかったかは時間が証明するだろう、と締めくくられており、少しカッコいい。

600種類ものオンライン授業リスト

オンラインで大学の講義を受けることが出来るMOOC( Massive Open Online Course)のリストを見つけた。それぞれのリンクはClass Centralというサイトへリンクされており、授業の概要や評価を見ることが出来る。

200 universities just launched 600 free online courses. Here’s the full list.

200の大学による、600種類もの講座がわずかなお金で受講することができる。

オンラインに抵抗が少ない人が多いためか、コンピュータサイエンスやプログラミングの授業が今の段階では多い。それでも、人文科学や医学、芸術、デザイン、ビジネスなどの分野でも講座が増えているようだ。

問題はこれだけ授業が増えてくると、どの授業が評判が良くて、自分に合っているかを探すのが難しいということだと思う。やはりCourseraなどの、MOOCプラットフォームにて授業の評価やRecommendationを受けるのが、授業を探すうえで良い方法なのだろうか。

ハードウェア開発を勉強するためのWebサイト集

Hacker Newsに「ハードウェア開発の勉強を始めるのに良いサイトは無いか?」という質問があったので、メモ代わりに書いておく。

What are hardware development learning web tutorials?

1.エレクトロニクスデザイン

https://contextualelectronics.com/

2.教科書系

The Art of Electronics という教科書がおすすめされている。

他にも組み込み開発全般としては、Making Embedded Systemsというオライリーから出ている本が紹介されている。値段も手ごろなのでここから始めるのが良いかも。

 

3.初心者向け/その他

https://www.allaboutcircuits.com/

自然言語処理 画像キャプションのデータセット Cornell NLVR

Hacker Newsで取り上げられていた自然言語処理のデータセット Cornell NLVRの紹介です。

公式ページ:http://lic.nlp.cornell.edu/nlvr/

データセット:https://github.com/clic-lab/nlvr

論文:http://alanesuhr.com/suhr2017.pdf

これは、色の付いた図形が複数描かれた画像とキャプションのセットが与えられて、そのキャプションが正しく図を説明しているかを true/ falseで判定するタスクのためのデータセットです。データ数は92,244個でクラウドソーシングでデータを集めたそうです。

例えば、以下の画像のキャプションとして「There is exactly one black triangle not touching any edge」(他のエッジに触れていない黒い三角形がただ一つある)が与えられており、この正解ラベルは「true」となっています。

他にも、例えば次の画像のキャプションとして「There is a box with multiple items and only one item has a different color」(複数アイテムとともに一つ箱があり、ただ一つのアイテムが異なった色を持つ)が与えられ、この正解ラベルは「false」といったようになっています。

 

現在の、トップのテスト精度は公開データに対して約67%程度であり、ランダムに答えた場合よりも少し良いといった程度でしょうか。まだまだ、発展させる余地があるテストデータのようです。

Rustで書かれたNeural Network実装:Jaggernaut

Rust言語で書かれたJaggernautというNeural Networkの実装を見つけた。WebAssemblyに変換されて、ブラウザ上で動作させることが出来る。

Juggernaut: Neural Networks in a web browser

デモページでは3種類のデータセットに対して、学習率とエポック数を設定して、データが分類されていく過程が見れる。デモの実装にはReactとD3.jsを使っているが、Neural Networkの学習部分にはJavaScriptは一切使っておらずRustのみで書かれているとのこと。

まだ機能的にはフィードフォワードネットワークのみ対応しているようだが、数種類の活性化関数やコスト関数を用意しているとのこと。

こういったアプリケーションが増えて、将来的にRustは果たしてC/C++を置き換える言語に成りえるのか見守っていきたい。

「Machine Learning – A Probabilistic Perspective」第5章を読んだ

前回(「Machine Learning – A Probabilistic Perspective」第4章を読んだ)の続き。

第5章はベイジアン統計について。基本的に著者はベイジアンの立場を取っているようで、本書はここまでベイズ統計の立場から機械学習モデルの解説をしている。次の章は、頻度統計の立場の話だが、そこではなぜ頻度統計ではなくベイジアンの見方を取るべきなのかということが語られている。

分かりやすい解説スライドへのリンクを張っておきます。

目次は以下の通り。

  • 5 Bayesian statistics
    • 5.1 Introduction
    • 5.2 Summarizing posterior distributions
      • 5.2.1 MAP estimation
      • 5.2.2 Credible intervals
      • 5.2.3 Inference for a difference in proportions
    • 5.3 Bayesian model selection
      • 5.3.1 Bayesian Occam’s razor
      • 5.3.2 Computing the marginal likelihood (evidence)
      • 5.3.3 Bayes factors
      • 5.3.4 Jeffreys-Lindley paradox *
    • 5.4 Priors
      • 5.4.1 Uninformative priors
      • 5.4.2 Jeffreys priors *
      • 5.4.3 Robust priors
      • 5.4.4 Mixtures of conjugate priors
    • 5.5 Hierarchical Bayes
      • 5.5.1 Example: modeling related cancer rates
    • 5.6 Empirical Bayes
      • 5.6.1 Example: beta-binomial model
      • 5.6.2 Example: Gaussian-Gaussian model
    • 5.7 Bayesian decision theory
      • 5.7.1 Bayes estimators for common loss functions
      • 5.7.2 The false positive vs false negative tradeoff
      • 5.7.3 Other topics *

最初の方はベイズ統計を使って、どのようにモデルを決めていくかといった内容。MAP推定など。

5.6に経験ベイズの話があり、少し理解しきれていない箇所があるので調べた。以下のページが詳しい。

経験ベイズ

つまりは、事前確率が良く分かっていない状況で、データをもとにして事前確率分布を求めるということだろうか。

最後の方はFalse positiveとFalse negativeについてや、ROCカーブなどについて。この辺は適宜必要な時に見返せば良さそう。

「Machine Learning – A Probabilistic Perspective」第4章を読んだ

前回(「Machine Learning – A Probabilistic Perspective」第3章を読んだ。)の続き。

4章は多変数ガウシアンモデルについて。この章は数学的に他の章よりも難しいと、一番初めに書かれており確かにその通りで難しい。流し読みな感じだけど大丈夫だろうか。

分かりやすい解説スライドを見つけたのでこれで復習しよう。

 

目次は以下の通り。(*がついているところは数学的に難易度が高いところ)

  • 4 Gaussian models
    • 4.1 Introduction
      • 4.1.1 Notation
      • 4.1.2 Basics
      • 4.1.3 MLE for an MVN
      • 4.1.4 Maximum entropy derivation of the Gaussian *
    • 4.2 Gaussian discriminant analysis
      • 4.2.1 Quadratic discriminant analysis (QDA)
      • 4.2.2 Linear discriminant analysis (LDA)
      • 4.2.3 Two-class LDA
      • 4.2.4 MLE for discriminant analysis
      • 4.2.5 Strategies for preventing overfitting
      • 4.2.6 Regularized LDA *
      • 4.2.7 Diagonal LDA
      • 4.2.8 Nearest shrunken centroids classifier *
    • 4.3 Inference in jointly Gaussian distributions
      • 4.3.1 Statement of the result
      • 4.3.2 Examples
      • 4.3.3 Information form
      • 4.3.4 Proof of the result *
    • 4.4 Linear Gaussian systems
      • 4.4.1 Statement of the result
      • 4.4.2 Examples
      • 4.4.3 Proof of the result *
    • 4.5 Digression: The Wishart distribution *
      • 4.5.1 Inverse Wishart distribution
      • 4.5.2 Visualizing the Wishart distribution *
    • 4.6 Inferring the parameters of an MVN
      • 4.6.1 Posterior distribution of μ
      • 4.6.2 Posterior distribution of Σ *
      • 4.6.3 Posterior distribution of μ and Σ *
      • 4.6.4 Sensor fusion with unknown precisions *

Linear Discriminant Analysisがどういうものか何となくわかった気がする。もうちょっと復習が必要だが、とりあえず先に進んでみる。先ほどのスライドにもあったが、ガウス分布はシンプルでありながら現実に即した分布であるので、解釈がしやすい分布であり、線形代数で計算がすむということで広く使われている。

「Machine Learning – A Probabilistic Perspective」第3章を読んだ

前回の続き。「Machine Learning – A Probabilistic Perspective」第3章を読みました。

第三章の目次は以下の通り。この章は、離散データをもとにナイーブベイズなどの手法でモデルを生成しようという話です。段々と数学的に難易度が上がってきた。

  • Generative models for discrete data
    • Introduction
    • Bayesian concept learning 65
      • Likelihood
      • Prior
      • Posterior
      • Posterior predictive distribution
      • A more complex prior
    • The beta-binomial model
      • Likelihood
      • Prior
      • Posterior
      • Posterior predictive distribution
    • The Dirichlet-multinomial model
      • Likelihood
      • Prior
      • Posterior
      • Posterior predictive
    • Naive Bayes classifiers
      • Model fitting
      • Using the model for prediction
      • The log-sum-exp trick
      • Feature selection using mutual information
      • Classifying documents using bag of words

この章で例として出てくるのは、いくつかの数字を観測したうえで、どのモデルから数字が生成されているかを推定するというもの。例えばD={16,8,2,64}を観測したうえでは、2の累乗というモデルの確率が一番高くなります。

その他にも、いくつかのデータが追加された場合に事後確率を更新することができる、ということが書かれています。これによりベイズ推定がオンライン学習に適しているということが言えるそうです(詳しくは8章)

ナイーブベイズについてもこの章の後半で述べられています。ナイーブという言葉の意味はフィーチャーが独立であることを仮定しないから付けられたとのことです。もしこの仮定が成り立たなくても、モデル自体がシンプルなためオーバーフィットしづらく、結果的に良い性能が出ることが多いそうです。

最後にはドキュメントの単語から、内容を分類するタスクが述べられています。Dirichlet Compound Multinominalという分布を使うと、一度観測されたデータはより観測されやすいとモデル化できるそうです。単語のようなスパースなデータを扱う際に、一度登場した単語は同じ文章中に再び登場しやすい、という直感的な感覚に合っているモデルです。

「Machine Learning – A Probabilistic Perspective」第2章を読んだ

前回の続き。

2章は確率論の復習です。一通り、確率は習っているのでスムーズに進めました。確率分布の性質などの部分は後から出てきたときに見返せば良いかなという感じです。

最後に情報理論の節があります。データの分布の相関を測るために使われるのかな。

2章の目次は以下の通り

  • Probability
    • Introduction
    • A breif review of probability theory
      • Discrete random variables
      • Fundamental rules
      • Bayes’ rule
      • Independence and conditional independence
      • Continuous random variables
      • Quantiles
      • Mean and vairance
    • Some common discrete distributions
      • The binomial and Bernoulli distributions
      • The multinomial and multinoulli distributions
      • The Poisson distribution
      • The empirical distribution
    •  Some common continuous distributions
      • Gaussian (normal) distribution
      • Degenerate pdf
      • The Laplace distribution
      • The gamma distribution
      • The beta distribution
      • Pareto distribution
    • Joint probability distributions
      • Covariance and correlation
      • Multivariate Student’s t-distribution
      • Dirichlet distribution
    • Transformations of random variables
      • Linear transformations
      • General transformations
      • Central limit theorem
    • Monte Carlo approximation
      • Example: change of variables, the MC way
      • Example: estimating π by Monte Carlo integration
      • Accuracy of Monte Carlo approximation
    • Information theory
      • Entropy
      • KL divergence
      • Mutual information

以下は、メモしておきたいことを列挙。

Bayesianなアプローチをとってモデルを構築することのメリットは、長期間の頻度が手に入らないイベントを予測するモデルを構築出来ることである。

二項係数nCkは”n choose k”と発音する。

ガウス分布は外れ値(outlier)の影響を受けやすいので、そういう場合は The Stuent’s t distribution を使うとよい。

2つの確率密度分布のdissimilarityを測る尺度として、KL divergenceがある。

低い相関係数であっても、高いMIC(maximal information coefficient)があれば、非線形な関係がある。