有益情報ですね(VMware + Ubuntu on Windowsとか)
埼玉大学の後藤先生(http://www.ke.ics.saitama-u.ac.jp/)が、ご自身の研究室HPで公開されている、「研究室メンバー向け」コンテンツが非常に良いです。
特に、「Ubuntuで作業環境を整えよう」(http://www.aise.ics.saitama-u.ac.jp/~gotoh/HowToUbuntu.html)はup-to-dateでメンテされているのでとても助かります。
ご自身の研究室運営のためのコンテンツなのだと思いますが、それをこうやって公開していただけると多くの社会人も助かります。
調べたら自分とあまり歳変わらないんですね・・・・やっぱり大学でポスト得る人たちはすごいです。
JUnitよちよち歩き on IntelliJ Idea
itelliJ idea上でJUnit4使ってテストコードを書くという練習。
基本的に"JUnit 実践入門"の第一章をreproduceするのが目的。
JUnitのjarをゲットする
なにはともあれ、JUnitのjarをゲットしましょう。
junit-4.12.jarとhamcrest-core-1.3.jarをゲットしておきます。
projectの準備
適当なところに新規プロジェクトを作成して、junit-tutorialという名前にします。
モジュール名もjunit-tutorialでいいや。
で、引き続きテストコード用のソースルートを作成します。
testというディレクトリをつくって、project structureとかでtestのディレクトリに設定。緑色になります。
あと、project structure -> modulesでjunitとhamcrestのjarを追加します。
するとこんな感じ。
テストにかけるクラスを書いてテストのひな形を生成
教科書にある通りCalculatorクラスを書きます。
エディター上でテストしたいクラス名(public Calculator)を右クリックしたらtestを生成するっぽいコマンドが出てくるのでテストのひな形を生成します。
(go to --> test --> create a new test. )
テストの設定はJunit4を選択。
適当にcode templateを整備しておくと、こんなのができるのであとは実装とテストですね。
この状態ではテストメソッドは何も実装していなくて、デフォルトでfailが出るようになっているので、runすると
無事に失敗します。
実装してテストする
ということで、multiplyとdivideのテストメソッドを作ってみる。
あと、Caculator.divideをfloat割り算するように修正。
めでたし!
例外処理のテスト
例外処理をテストするときには、@Testの後に出てきてほしい例外のクラス名を書いておくと、例外がでると成功、というテストになる。
例えば、除算のゼロ割でIllegalArgumentExceptionをthrowさせるように変更しておく。
これのテストの書き方と結果。
めでたしめでたし!これで1章を突破した。
moses on Cygwin/Windows
いまちょっと個人的にstatistical machine translationに興味があるので、とりあえずmosesをインストールして動かしてみよう!ってなった。
まずはありものの言語モデル等でmosesを動かすことが目標。
あと仕事じゃないので家のWIndows、すなわちCygwin環境での実行。
Cygwinインストール
まずは本家Cygwinからsetup.exeをダウンロードして使う。
cygwinのインストールは基本的にsetup.exe使うだけだけど、設定とかは
を参照しました。
lapack, boost, ssh emacs, zip, bzip, libtools, ncurses,wget,automake,zshなど思いつくものを全部入れる。
ターミナルから右クリックとかでメニューとか、Cygwinオワコンとかいう人もいるけど着実に便利になってるよね。
を実施します。
mosesと関連ライブラリ
mosesのインストールについては
が参考になりました。ただ、そのままでは通らないところもあったので
そこは試行錯誤。
まずはGIZA++はそのまま入りました。
SRILMはなぜかインストールがどうしても通らなかったので
IRSTLMだけインストールしています。
次のページ、boostはcygwinでパッケージされているのでパス。
mosesのインストールですが、
インストールコマンドは
./bjam -jX (XはCPU数)
だけでした。オプションつけると逆に動きません。
まずはテスト
この段階で欧米言語なら動くので、
にあるとおりにサンプルコードをダウンロードしてテスト。
Das ist eine klines haus. を翻訳する。
実行ディレクトリにnbest.txtというファイルができて、
おお、ちゃんと並んでいる!
日本語もやりたい
のでMecabを次はインストールしよう.
試行錯誤の挙句、
で配布してくれているパッチを当ててようやくmecabのインストールに成功。
Binary DNNs: articles(自分のメモもかねて)
岡野原さんのツイートで、binary netが話題になっていますね。重みも出力もすべて1 or -1に制限しても、性能が落ちずに計算が早くなると話題です。
この著者はNIPS2015でその前身の話を出しています。この時はアップデートする時だけバイナリにしているのでBinaryNetほど効率的ではないですし、なんとも歯切れの悪い内容になっていました。
あと、同じチームがICLR206にもsubmitしてますね。日付を見るとこれはbinarynetの前なので、結局binarynetが最新結果(一番大胆なことをしている)ことになります。
[1510.03009] Neural Networks with Few Multiplications
あと、最新のAAAIでも似たような話があります。ここではbackward方向だけ重みを変えていて、結局重みの符号だけが大事ということです。まだ会議の参加者限定でopenではないはずなのでリンクは張りませんが・・・
"How Important is Weight Symmetry in Backpropagation?", Liao, Leibo, and Poggio, in AAAI 2016.
以上眺めると、binary netにあるように全部バイナリでモデル化するのは問題がなさそうということですね。あとはこのためにgpu codeレベルで最適化されたコードが書けるかどうか、ということになりそうですね・・・
あ、そういえば岡谷先生の深層学習本@機械学習プロフェッショナルシリーズは通読しましたけど、素晴らしすぎる出来でしたのでオススメ
Topic modeling survey on pattern recognition perspective
魔王様おもしろいよねぇ、ついていきます
娘が生まれて、そのお世話でほぼすべての時間を使いきっていました。
タイトルは、残りわずかな時間ではたらく魔王さま!を読み返して思ったこと。
アムスラムスちゃんを見る目が完全にパパ視線になっていることを自覚。
そろそろ続巻を買い揃えていかないと
このブログとは別に、育児日記作ろうかなぁ・・・
ブログはテクニカル&ミクな話に限定するとか
Gartner Hype Cycle 2015の話を読んで、10年間分まとめた
ハイプサイクル(Hype Cycle)は、Gartnerの使っている有名な技術トレンドですね。
技術に対する期待値の趨勢を
黎明期 --> 流行期 --> 幻滅期 --> 回復期 --> 安定期
に分けて絵にしたやつで、毎年公開しています。
今年のレポートは
にあります。
今日は一日かけてハイプサイクル10年分を表にまとめて可視化しました。
すごく疲れたけど、大変示唆的なものが見れたので良しとします。
これから毎年アップデートしていきます。
(2015/08/25追記)
けっこう面倒だったので10年分まるっと公開はあれかなー、と思ったので、ここ5年分の分だけ置いておきます。Field列は著者の勝手なインデックスです。
https://dl.dropboxusercontent.com/u/38783966/GartnerTehcnologyHypeCycle_Summary_public.pdf
ちなみに
- Virtual Personal Asssitants (特にVirtual Assistantsとの違い)
- Smart Robots
- Digital Dexterity
- Smart Advisors
が一体何なのか、ご存じの方はご教示していただければ嬉しいです。
下記はここ数年の動きから分かることです。
Big Dataが消えた(一時的かも)
2012, 2013と流行期、2014で幻滅期、そして今年消滅。もはや「当たり前」の前提になったから消えたのかもしれない。「ビッグデータ」だけではビジネスは食べていけないということ?
ただ、このHype cycle, 1年消えてまた復活ということもあるので、あえて今年書かなかっただけかもしれません。来年あたり、回復期に出てきてもおかしくありません。
Internet of the Things
今年初めて現れたやつで、もっとも衝撃的だったこと: citizen data science, self-servide Delivery of Data Analystics
社内にそれなりに動くデータサイエンティストチームを「作る」ためのパッケージを作って売る。Intel社が2013年にこういうの出していました。