Rest Term

Blog

PCパーツ新調メモ 2017/01

このお正月にOSとSSDを新調しました。前回のエントリーからの差分をメモ(記載価格は購入当時の価格)。

OS Windows10 Pro \13,824
SSD PLEXTOR M8Pe PX-512M8PeG-08 512GB SSD \31,900
VIDEO GeForce® GTX 980 GAMING 4G \41,775

PCパーツは値動きが激しいので欲しいと思った時が買い時。1万円未満の価格差なら誤差と考えると気楽に買い物できるのでオススメです。

ねんがんのNVMe SSDをてにいれたぞ。

USBフラッシュメモリと並べてみるとコンパクトさがよくわかります。

容量単価は高いですが性能も高いです。ただし、M.2接続のSSDを使う際には発熱によるサーマルスロットリングを避けるためにも温度管理には気を遣いたいところ。室温20℃の環境においてCrystalDiskInfoで計測すると人の体温と同程度の温度。SATA接続のHDDよりも8 ~ 10℃前後高かったです。ヒートシンク付きモデルなのでこの程度で済んでいるのかどうか、夏場は一層注意したいです。

あとはNASとしてQNAP TS-251+も去年秋頃に購入し、ユーザーデータは全てNAS上に置くようにしました。もちろん外部からもアクセスできるようにVPN環境も整えています。クラウドストレージのAmazon DriveとMicrosoft OneDriveも併用していますが、速度面を考慮するとNASの方がストレスが少ないです。

これまではメインのWindowsマシンをゲーミングPC兼開発機として運用するべくいろいろ調整してきましたが、Windows7以前の環境ではなかなか上手くいきませんでした。Windows10 ProではHyper-Vが利用できるので、Docker for Windowsを導入することでLinuxの開発環境を整えやすいです。Windows7以前のようにVirtualBox等を併用しなくて済むので構築のハードルが低くなっています。Bash on Ubuntu on Windowsはまだ安定したプロダクトではないようなので、こちらはもうすこし様子見をしようと思います。

 

Tags: ,

JavaScriptで機械学習の実装 4 SCW

前回 JavaScriptで機械学習の実装 3 AROW に引き続きオンライン学習アルゴリズムを試しています。Node.js勉強中なのでJavaScriptを使ってこつこつ学んでいきましょう。

今回は SCW (Soft Confidence Weighted Learning) と呼ばれるアルゴリズムを扱います。

SCW (Soft Confidence Weighted Learning)

2012年に提案された、CW (Confidence Weighted Learning)と前回紹介したAROW (Adaptive Regularization of Weight Vectors)の特徴を備え持つ手法です。SCWはCWと同様に重みベクトルの各重みが正規分布に従って生成されていると考えます。

SCWのアルゴリズムは以下のようになっています(元論文から引用)。
scw_algorithm

μが信頼している重み、Σが各重みの信頼度・自信(confidence)を表しており、ハイパーパラメータCでどの程度の誤りを許容するか(損失関数を常に0にするという制約を緩める)を調整しています。
scw_update_kld

損失関数は以下のように定義されており、信頼度が低いパラメータは重視されないようになっています。
scw_loss_function

また、αとβはどちらもCWと同様に閉じた形で更新式が表されます。αの計算式は二通りあり、それぞれSCW-IとSCW-IIと呼ばれています。具体的な式については論文などを参照。

SCWの特性として論文の最後で以下の4つが挙げられています。

  1. large margin training
  2. confidence weighting
  3. adaptive margin
  4. capability of handling non-separable data

性能面ではCWやAROWと比べて多くのケースにおいて高精度で効率が良い(収束が速い)とされているようです。

検証

今回はLIBSVM Data: Classificationの a9a データセットで分類精度や収束速度などを確認してみます。a9a は世帯収入が一定以上かどうかの二値、線形分離不可能なデータになっています。

SCW実装の本体やデータ読み込み用モジュール、動作確認用のテストコード一式はこれまで通りGitHubに置いておきます。今回もAROWと同様にTypeScriptとJavaScriptの両方のコードを上げてあります。

疎ベクトル用に最適化してないナイーブな実装なので、1,355,191次元もある news20.binary データセットを用いたAROWとの比較は難しいです。ということで a9a を使って動作確認をします。

データファイルの読み込み部分は前回作ったLIBSVMフォーマットファイルをStream APIで読み込むモジュールを使い回しました。Node.js環境において以下のような感じで学習とテストを実行できます。

SCWの2つのハイパーパラメータは適当に設定し、データは1巡のみで84.6%の分類精度となりました。AROWの時もそうでしたが、やはりオンライン学習は収束が速くて助かります。

オンライン学習の性質を確認するため、学習データを1件ずつ与えて学習する毎に精度確認を行いました。データを与える順番を変えるためにデータをシャッフルして合計3回試行しています。
result_a9a_scw
a9aなら5,000サンプルくらい与えてやれば十分なようです。

線形SVMのscikit-learn実装(sklearn.svm.LinearSVC)でも試してみました。グリッドサーチして学習した結果、こちらも84%の分類精度となりました。a9a データセットにおいては線形SVMと精度面での違いはそこまでないようです。

SCWはAROWよりもパラメータが一つ多いので調整がめんどくさそうに思えますが、適当に設定しても高い精度が出るのでそんなに悩まなくても大丈夫です。とりあえず動作確認はできたと思うので今回はこの辺で。次はそろそろ分散学習アルゴリズム周りを学んでいきたいです。

参考

 

Tags: , , ,

GTC Japan 2016 参加レポート

GTC Japan 2016が10月5日にヒルトン東京お台場で開催されました。今回で参加は2回目ですが、前回(2014年)より参加者はとても増えていたように思います。ゆりかもめでは小さすぎる。

dsc07402

dsc07447

基調講演

NVIDIA ジェンスン・ファン(Jen-Hsun Huang)CEOの基調講演に関するレポートは大手ネットメディアがたくさん書いてるのでそちらを見た方が詳細が分かると思いますが、ここでもメモ書き程度におさらい。

続きを読む »

 

Tags: ,

IoT関連のサンプルコードと技術メモ

2016年2月に発売されたRaspberry Pi 3を買ってから、センサーモジュールやIoTクラウドサービスなどをいくつか試しているので、検証用サンプルコードと技術メモ(Wiki)を残しています。

dsc07361

サンプルコードは基本的にはPythonが多いですが、一部はRubyやJavaScriptのコードも含まれています。技術メモはGistなどの外部サービス上ではなく自前のWiki上に備忘録としてメモしています。結構分量が増えてきたのでここでも周知しておこうと思いまして。

Raspberry Pi 3ではCPUが64ビットになり、前モデルのRaspberry Pi 2より動作周波数(クロック)が向上しています。また、Wi-Fi(802.11b/g/n)とBluetoothが搭載されたのも素晴らしいです。

イメージセンサー性能が格段に向上したCamera Module v2.1も入手しました。このカメラモジュールのイメージセンサーは、SONYの最近のデジタルカメラで使われている裏面照射型のセンサー(back-illuminated sensor)なので高感度性能も期待できます。

raspi_cameramodulev2

Fixed focus lens on-board
8 megapixel native resolution sensor-capable of 3280 x 2464 pixel static images
Supports 1080p30, 720p60 and 640x480p90 video
Size 25mm x 23mm x 9mm
Weight just over 3g
Connects to the Raspberry Pi board via a short ribbon cable (supplied)
Camera v2 is supported in the latest version of Raspbian, Raspberry Pi's preferred operating system

センサーモジュールは秋葉原で格安で手に入るので、もし面白そうなセンサーがあればいろいろと試していきたいと思います。技術WikiやGitHubの方はちょくちょく更新していきます。

1602_lcd

 

Tags: , , ,