2016/01/02現在 個人的に読んでいる/読みたい技術本一覧

はじめに

ここでは現在読んでいる/読みたい本を一覧で紹介します。 (ついでになんで読みたいかも簡単に書きます)

読んでいる最中

大体2、3冊を並行で読んでいます。

ハイパフォーマンスPython

ハイパフォーマンスPython

  • Pythonはいままで軽く触った程度だったんですが、自分が思うに機械学習の分野は現在C/C++PythonまたはJavaScalaができないとやっていけないなと強く感じています*1。なので最近はPython系の本を読み漁っています。

C++のエッセンス

C++のエッセンス

  • C++の本(Effective Modern C++)を読もうとしたらつまずいたのでとりあえず基礎から。Cライクな実装を今までしてきましたが(辛うじてSTLを利用するレベル)、EffectiveなんちゃらC++系の本を読むためにはC++独自の実装方法を知る必要があるようです。

CUDA C プロフェッショナル プログラミング (impress top gear)

CUDA C プロフェッショナル プログラミング (impress top gear)

  • いい加減GPUやらないと。。GPUアーキテクチャがどんどん進化していって、昔書いた低レベルに最適化されたコードが、次世代のアーキテクチャだと通用しない場合があるようですね(ハイパフォーマンスPythonの著者談)。CUDAのような高レベルのライブラリを積極的に使ったほうがいいとのこと。

途中まで読んで一旦ペンディング中の本

これらの本は読みたいんですけど先に優先して読みたい本があり、一旦ペンディングしている本です。

Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)

Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)

  • Effective Modern C++を読むための通り道。

C++のためのAPIデザイン

C++のためのAPIデザイン

  • 再利用や拡張性の高いC++コードを書きたいので読んでいます。

ウォール街のアルゴリズム戦争

ウォール街のアルゴリズム戦争

  • タイトルにひかれて購入したのですが、最初は前提知識がないと理解できない文が多く難儀していたのですが、後々読んでいくとそれらの説明が書かれていておもしろくなってきます。アメリカの市場において人手によるマーケットメーカから計算機によるマーケットメーカへの変化の過程(イノベーション)がドキュメンタリーとしてかかれており、また、その過程で出てくる技術系の話もおもしろいです(サーバのコロケーションとか電子的な注文がどういう流れで約定されるのかなど)。あともうちょっとで読み終えるのですが、少しペンディング中。

買ったけど積んでいる読みたい本

  • 取り上げている全ての内容に興味があるわけではないですが、Cでのビルド(特にCMakeに興味あり)についてと線型代数操作のライブラリ(Blas)の話が書かれているようで、 これ系の話題を取り上げている本をあまりみかけないので購入しました(まだ読んでませんが。。)。

Effective Modern C++ ―C++11/14プログラムを進化させる42項目

Effective Modern C++ ―C++11/14プログラムを進化させる42項目

  • 買ったはいいんですが、CライクなC++を書いてきた私には内容が難しすぎて積んでいます。。とりあえず、C++のエッセンスとEffective C++、Effective More C++を読んでからですかね。。

新訂版MORE EFFECTIVE C++ (ADDISONーWESLEY PROFESSIONAL CO)

新訂版MORE EFFECTIVE C++ (ADDISONーWESLEY PROFESSIONAL CO)

  • 同じくEffective Modern C++を読むための通り道。

実践 コンピュータビジョン

実践 コンピュータビジョン

入門 自然言語処理

入門 自然言語処理

  • 勉強中のPythonを使っている機械学習・データ分析系の本をざっと購入。

Deep Belief Nets in C++ and Cuda C: Restricted Boltzmann Machines and Supervised Feedforward Networks

Deep Belief Nets in C++ and Cuda C: Restricted Boltzmann Machines and Supervised Feedforward Networks

Deep Belief Nets in C++ and CUDA C: Autoencoding in the Complex Domain

Deep Belief Nets in C++ and CUDA C: Autoencoding in the Complex Domain

  • Deep learningの実装が説明されている本。CUDA Cの本を読み終えたら読みたい本。

関数型オブジェクト指向AI プログラミング―Scala による人工知能の実装

関数型オブジェクト指向AI プログラミング―Scala による人工知能の実装

  • 後半にディープラーニング(デノイジングオートエンコーダやディープニューラルネットワークなど)のScala実装があり購入。(ニッチだと思うんですが)Scalaで書かれているのがすばらしいと思います。

深層学習: Deep Learning

深層学習: Deep Learning

進化計算と深層学習 -創発する知能―

進化計算と深層学習 -創発する知能―

  • Deep learningの本の中でも進化計算との共存について触れられている本はこれくらいだと思います。ざっと見ですが、本当に深く理解するためには論文まで追っかける必要がありそうな気がします。Deep learningと進化計算の組み合わせでどういった研究がされているのか大まかに知るには適していると思います。

フラッシュ・ボーイズ 10億分の1秒の男たち

フラッシュ・ボーイズ 10億分の1秒の男たち

Speech Recognition Algorithms Based on Weighted Finite-State Transducers (Synthesis Lectures on Speech and Audio Processing)

Speech Recognition Algorithms Based on Weighted Finite-State Transducers (Synthesis Lectures on Speech and Audio Processing)

  • 探索を使う機械学習を研究していた身としてはWFSTをずっと気にしていたのですがなかなか機会がありませんでした。WFSTの応用例として音声認識の探索問題があるのですが、それを解説した本が出たので購入しました。実はこの本、私が博士一年のときにAmazonで存在を知って予約をしたことがあるのですが、まだその時点ではこの著者がこの本を書くことを知らなかったようです*2。それから4年の月日が流れ、この本をやっと読むことができるというのは少し感慨深いものがあります。

*1:機械学習分野でJava/Scalaが必要になるのはSparkによるものです。SparkはPythonでも使うことはできますが、Spark用機械学習ライブラリmllibを拡張しようと思うとScalaが必要になります。またSparkを使ったDeep learningの実装としてDL4Jがあるのですが、これがJavaScalaで書かれています。なので分散環境での機械学習にはJavaScalaがメインになり、一台のマシンで完結できる場合はC/C++Pythonかなと。TensorFlowなどC/C++Pythonで分散環境に対応した機械学習ツールが扱いやすくなってくると必ずしもそうなるとは限りませんが。

*2:何を言っているのかわからないと思うのですが、著者はWFSTの本について当時そういった依頼があると軽く知っていた程度だったようです。にもかかわらず、すでにAmazonで予約できるという状況になっていたんです。これには著者も驚いていたようです。Amazon恐るべし。