JavaScriptで機械学習の実装 6 t-SNEによる次元削減

ここ数ヶ月はネットワーク周りのネタ書いてたせいかあんまり頭を使ってなかった気がするので、このGW期間中は久しぶりに理論寄りのコードをけっこう書きました。今回はその一例を挙げます。 今回はt-SNE(t-Distributed Stochastic Neighbor Embedding: t分布型確率的近傍埋め込み法)による高次元データの次元削減および可視化を試してみました。t-SNEはちょっと前に流行って、今では幅広い分野で実用されている次元削減(次元圧縮)手法の一つです。古くは主成分分析(PC…

JavaScriptで機械学習の実装 5 Gradient Boosting

少し間が空いてしまいましたけど、今回はGradient Boosting (勾配ブースティング)と呼ばれる機械学習アルゴリズムを試してみます。機械学習関連のコンペでも大人気の手法ですね。かなり昔(2011年)に決定木をJavaScriptで実装したことはあるので勾配ブースティングも併せて学んでおこうと思います。 JavaScriptで決定木 Gradient Boosting (勾配ブースティング) ブースティングについてWikipediaを引用すると、 ブースティング(英: Boosting)…

GPU対応の類似検索(最近傍探索)ライブラリ Faissの紹介 part2 GPUを利用した検索

Facebook AI Research (FAIR)が開発したGPU対応の類似検索ライブラリ Faiss に関する2回目の紹介エントリーとなります。前回は、FaissのインストールとC++チュートリアルの説明を行いました。今回はGPUを利用した検索処理を試してみます。 Faissのインストール方法については前回のエントリーを参照してください。 GPU対応の類似検索(最近傍探索)ライブラリ Faissの紹介 part1 導入/チュートリアル 環境 Amazon Linux AMI release…

GPU対応の類似検索(最近傍探索)ライブラリ Faissの紹介 part1 導入/チュートリアル

Facebook AI Research (FAIR)が開発したGPU対応の類似検索ライブラリ Faiss を紹介します。 [06/25追記] Faiss GPU版の検索についてエントリーを書きました。 GPU対応の類似検索(最近傍探索)ライブラリ Faissの紹介 part2 GPUを利用した検索 論文は以下で公開されています。 [1702.08734] Billion-scale similarity search with GPUs 論文タイトルの通り、10億スケールの大規模データに対して…

JavaScriptでLSDによる高精度な直線検出

ここ半年くらいは機械学習関連技術のJavaScript実装を行ってきましたが、今回は久しぶりに画像処理関連の要素技術を調べました。 Line Segment Detector (LSD) と呼ばれるアルゴリズムになります。 LSD: a Line Segment Detector (元論文PDF) 画像: 東京ガーデンテラス紀尾井町 – Tokyo Garden Terrace Kioicho LSDによりデジタル画像中から高精度に直線(line segmentなので厳密には線分)を…

JavaScriptで機械学習の実装 4 SCW

前回 JavaScriptで機械学習の実装 3 AROW に引き続きオンライン学習アルゴリズムを試しています。Node.js勉強中なのでJavaScriptを使ってこつこつ学んでいきましょう。 今回は SCW (Soft Confidence Weighted Learning) と呼ばれるアルゴリズムを扱います。 SCW (Soft Confidence Weighted Learning) 2012年に提案された、CW (Confidence Weighted Learning)と前回紹介し…

JavaScriptで機械学習の実装 3 AROW

今回はオンライン機械学習アルゴリズムとして知られている AROW (Adaptive Regularization of Weight Vectors) を試してみました。内容的には以下のエントリーの続きになりますが、今回からタイトル文言を少し変えようと思います。TypeScript入門という段階はそろそろ脱したかなと思うのと、TypeScriptよりも直接JavaScriptで書く量の方が増えてきたためです。 TypeScript入門 – 機械学習の実装 1 Denoising Autoenc…

TypeScript入門 – 機械学習の実装 2 Logistic Regression

前回はTypeScript入門ということで、TypeScriptで Denoising Autoencoders という種類のニューラルネットワークを作ったのと、AngularJSやAngular Materialの使い方を少し学ぶことができました。 TypeScript入門 – 機械学習の実装 1 Denoising Autoencoder このDenoising Autoencoderを構成要素として何層も積み重ねるとStacked Denoising Autoencoderとな…