Myoが我が家に流れ着いた

 

f:id:kogecoo:20141218021514j:plain

 

 

そういえば首を長くして待っていたMyoが届いた。遅れに遅れてようやく発送されたのが10月で、やっと届く!と思ったのだけどいつまでたっても届かず、サポートに問い合わせたら4週間くらいよ、と言われ、船便だった事を知る。その後すっかり忘れた頃に届いた。

 
購入時に見なかったスペックを見たところ、9軸とある。ARMが乗ってる。通信はBLE。なんかすごいな。
Sensors
Medical Grade Stainless Steel EMG sensors, Highly sensitive nine-axis IMU containing three-axis gyroscope, three-axis accelerometer, three-axis magnetometer
LEDs
Dual Indicator LEDs
Processor
ARM Cortex M4 Processor
Haptic Feedback
Short, Medium, Long Vibrations
 
 このデバイス、特筆すべきは筋電の電極が乾式であるところ。コンシューマ向けって言ったら当然電極は乾式なんだけど、ようやったなぁという感想。    
 
 肝心のジェスチャー認識は4種あり、握り、開き、影絵のキツネ、あと突っ込みの時のアレ。4人位に試してもらった感じだと、一人全然ダメな人が居たが、それ以外は特に労せずキャリブレーションジェスチャをするだけでちゃんと認識する。筋電単体ではなくて他のセンサも併用して認識しているのかもしれないけど、よくわからない。    
 
SDKもパッと見た感じ一通りきちんと揃っていてリソースがちゃんとある雰囲気を感じたので、作ってるThalmic Labのメンバー一覧を見るとすごい人数。ですよね。  
 
当然ながらこういうのはアプリがあってなんぼだよなぁと思った。すぐにでもいじり倒したいが、最近バタバタしているので当分無理そう。

NLP勉強会#2で文脈自由文法の話をしてきた

NLP勉強会 #2 @dwango で話をしてきた。 内容は文脈自由文法の基本の話。

オーディエンスとしてどういう人が来るのかよく分からなかったので話す内容をどうするか大いに悩んだが、会の趣旨が自然言語処理の再学習ということらしいので、勉強会界隈では話されているのを見たことがない文脈自由文法というテーマで話してきた。

内容は形式文法、CFG、CKYアルゴリズム、PCFGをざっくりと数式なしで。

スライドは以下。

運営の方々、お疲れ様でした。
また、会場を提供してくださったdwango様、ありがとうございました。

アイビス2014見てきた

 もう先週の話だけど、怖いと評判?の第17回情報論的学習理論ワークショップ(IBIS2014)に聞き専で全日程参加してきた。
単なるエンジニア風情がもったいない限り。

技術、研究寄りな真面目なレポートは会社で共有した。頑張った。
ここではWeb上のチラシの裏らしく、当時の気分をポエムしておく。

1日目: チュートリアル

統計・機械学習の基礎

  • CRPとIBPが計3スライドで説明されていて世の中の進歩を感じる。
  • セミパラのよい文献を講師の方に要求したところ、このへんが良いと教えてもらった

機械学習に基づく推薦システム

  • 以前参加した統数研のトピックモデル講座でも講師をされていた方。
  • ベイズ的行列分解の話はICML2008で結構古いが知らなかった。悔しい。
  • GP拡張カッコイイ。
  • ハザードモデル使う推薦はソシャゲの人が聞いたら喜びそう。

音声音響信号処理のための確率モデルと学習アルゴリズム

  • 音声そんなに詳しくないからこの話は全体の概観と道具立てをひと通り知れてすごい良かった
  • トラジェクトリHMM実装したくなった。
  • 補助関数法勉強したくなった。

Pythonによる機械学習プログラミング

  • 場慣れ感。
  • 各論へのリンク集が嬉しい。
  • 結構細かいノウハウも話されていて勉強になってしまった。

2日目 企画セッション1 離散アルゴリズム機械学習応用

モンテカルロ木探索の理論と実践

  • 囲碁の盤面の評価関数作れた人は居ないんじゃないかな、という話が印象的。
  • 盤面の評価関数が不要というのは偉いという話。
  • ここでも多椀バンディット。
  • 細い一本道(勝ち筋が1つだけある)みたいなのに弱くて、将棋とかだと弱いというのは面白い。
  • A*とMCTSのゲームプレイにおける性格の違いが面白い

離散構造と離散分布

  • 途中からついていけなくなった。悔しい。
  • logicianに投げてみたら、資料をくれと言われた。うーむ。僕もほしいのだが。

大規模グラフ解析のための乱択スケッチ技法

  • LSHでなくてスケッチ技法っていうの?分野の違い?
  • 平易に説明しようという配慮がよく分かる感じで良かった。

招待講演:Deep convolutional network Neocognitron for visual pattern recognition

  • まさかのNeocognitron提唱者。
  • 歴史的経緯を聞けて楽しい。

招待講演:Deep learning: scaling and applications

  • Oxford / DeepMind っていうその所属は何なんだ。
  • 最初に福島先生への賛辞を述べておられてクールだって思った。
  • なんかもうDNNでなんでもいけるぜみたいな雰囲気。

3日目: 企画セッション2 学習理論

空間結合符号

  • 途中からついていけなくなった。また悔しい。
  • これは参考になりそうな資料が沢山あるようだ。

Wasserstein幾何とφ-正規分布

  • 手書きカッコイイ。
  • もちろん途中からついていけなくなった。
  • 確率論屋さんにこの話を振ってみたところ、セドリック・ヴィラニ(だったと思う)の話を交えて面白おかしく話してもらえた。

多腕バンディット問題

  • 昔は農地への作付物の選択、新薬、新療法の検証という話は始めて聞いた

招待講演: Current and Future Trends in Computer Vision

  • 過去にこの辺の分野をかすったことがあるので楽しく聞けたように思う。
  • 会場の反響音で、ただでさえ低いヒアリング能力値が削られまくって良くわからない箇所が多かった。スライドがほしいと思った。

4日目:ビッグデータ利用の社会的側面

産業領域におけるデータ活用への期待と現状

情報保護の統計モデル

  • k-匿名化はきつすぎる(という表現をしていたかどうかは覚えてないが)というフレーズだけやたら印象に残ってる。
  • 聞いたこと無い分布がたくさん出てきた。

ゲノムプライバシの保護と個別化医療への展開

  • SNPsの話
  • ゲノムプライバシは個人だけの問題ではないという話
  • なりすまし、冤罪に使われるかもという観点は初めて聞いた
  • 質疑で学習器が個人情報の塊では、みたいな話をされていて、以前似たようなことを考えたことがあったので掘り下げたくなった。

企画セッション4 期外学習のウェブデータ及びマルチメディア活用

大規模言語データに基づく自然言語処理とその応用

クラウドソーシング・デマ・MOOC

  • 構造学習やってる人だと思ってた。
  • クラウドソーシングの品質保証という全く知らなかった分野。
  • 同じような枠組みで様々な話につながっていて興味深かった。
  • ビッグデータ大学

ウェブ上のユーザ行動の分析による消費インテリジェンス

  • ゼクシィが結婚する人の90%が読んでるという話にざわめく
  • 勝敗ネットワークという道具があることを知る。
  • 知識発見らしい事例もあり、夏にビーサンが売れる話っぽい部分もあり。

ポスターセッション

  • IBISの醍醐味(らしい)
  • 議論が白熱している感ある。
  • あっちこっち回ってコメントしまくってきた。
  • 回ったところもメモっておいたけどさすがにここには書けない。
  • 医療を対象にした応用がちらほらあって、大変興味をそそられた(もちろん寄った)
  • YahooはCold Startと戦い続けている。
  • ぐうの音も出ないわ、という感じのポスターが(見た中で)2つあった。すごい。
  • どのポスターも濃かった。

Maker Faire Tokyo 2014に参加してきた

Maker Faire Tokyo 2014に出展で参加してきた。

f:id:kogecoo:20141123110428j:plain

そもそも見る側で参加したことすらこれまで無かったのだけど、
ひょんなことから参加することに。

みな趣味に走りまくっていて、好きなコトやってる感があり、 熱意が伝わってきてすごくいい。カオス感ある。 カオス感ある展示会だとデザフェスもそんな感じだけど、 Maker Faireは展示側がグイグイくる感じで、これはこれで新鮮だった。

自分が出したのは一発ネタ気味のものだったが、
まあまあウケたようで良かった。

個人的にはバットマンのバイク(チャリ)がすごい好きだった。

f:id:kogecoo:20141125004831j:plain

面白かったものはあげたらきりがないけど写りの良い写真があまりなかった。

あと、ガチャ回したらマフラータオルあたった。

f:id:kogecoo:20141123165556j:plain

また行きたいと思った。

括弧対応をとる

一瞬必要だったので。corr_tableをいじればどんな組でも可。括弧の交差はダメ。

var corr_table = { '(' : ')', '[' : ']' };
function checkBrackets( t ){
	var stack = [];
	for( var i = 0; i < t.length; ++i ){
		for( var j in corr_table ){
			if( t[i] == j ){
				stack.push( j );
				break;
			} else if( t[i] == corr_table[j] ){
				if( stack.pop() != j ){
					return false;
				} else {
					break;
				}
			}
		}
	}
	return stack.length == 0;
}

ん?はてダってカテゴリつけないとだめなん・・・?

題名なし

よくあるnext_permutationのサンプル

#include<iostream>
#include<vector>
#include<algorithm>

void printvec( std::vector<int> &v){
        for( int i = 0; i < v.size(); ++i ){
                std::cout << v[i] << " ";
        }
        std::cout << std::endl;
}

int main(){
        std::vector<int> v, e;
        v.push_back(1);
        v.push_back(2);
        v.push_back(3);
        printvec( v );
        while( std::next_permutation( v.begin(), v.end() ) )
                printvec( v );

        return 0;

出力

1 2 3 
1 3 2 
2 1 3 
2 3 1 
3 1 2 
3 2 1 

ループを変えてみる

        for( int i= 0; i < 12; ++i ){
                std::cout << std::next_permutation( v.begin(), v.end() ) << " ";
                printvec( v );
        }

出力

1 2 3 
1 1 3 2 
1 2 1 3 
1 2 3 1 
1 3 1 2 
1 3 2 1 
0 1 2 3 
1 1 3 2 
1 2 1 3 
1 2 3 1 
1 3 1 2 
1 3 2 1 
0 1 2 3 

おお、覚えていらっしゃるのか。

スマートフォンへの懸念

 特に日本では、だと思うのだけど、これまでの携帯電話のブラウザと同じような感覚で
みんなiPhoneとかAndroidフルブラウザ使っている(あたりまえだ)。
これにちょっと警鐘を。今更僕が言うまでもないのですが。


 わりと最近認識されてきたっぽいですが、セキュリティ面でかなり懸念があります。
正確には、バージョンの古さが問題なのです。まあ当たり前ですが。
そりゃあ当たり前で、バージョンアップにはバグフィックスも含まれている、
逆に言うと新しいバージョンがリリースされたときには、古いバージョンにあった、
問題が認知されてしまっているわけです。セキュリティ面も含めた、です。


 組み込み機器はアップデートのしにくい世界、これはかなり致命的になるわけです。
Androidで言えば、メーカーのアップデートの頻度等をみるとわかるかと思います。
コストすごいしね。


 そんなわけで、脆弱性を抱えた端末は、巷にゴロゴロ転がっていて、
たとえばWebKitで過去に認知された問題等を突けば攻撃できる、
というような状況に既になっているような気がします。
それについては、iPhoneにしても状況は全く一緒だと思います。


 たとえばAndroid ver.x向け攻撃コード、なんてのがこういうのが認知された瞬間作られてしまうわけですよね。
 ここまで言えば、「あー、今あれが狙い目だなー」とかみんな考えるんじゃないでしょうか?


 これまでのガラケーは、わりとクローズドなコンテンツの世界だったり、
jsがまともに動かなかったりで、逆に助かって(?)いたのだけど、時代はフルブラウザ


 スマートフォンブームに乗ろうと日本のキャリアも熱心ですが、そのあたりは握りつぶしているんでしょうか。
結局ユーザーが気をつけるしかないっすかね。


 実はセキュリティパッチだけは頻繁に自動であてていたり?なんていう期待をしちゃあいけないような気がします。


 スマートフォンもってないんですけどね、僕。

ブラウザでグリッドコンピューティングとかやったらどうか

 最近はコンピュータの性能上がっているし、JITだしで、
ブラウザ上で重い処理をやっちまっても結構何とかなっちゃいます。3Dとか扱えちゃうしね。
おまけに、Web Workersなんか使っちゃえば、javascriptでマルチスレッドまでできちゃう。


 それじゃあ、こんなのはどうか。
というわけでjavascriptで、グリッドコンピューティング。
計算させたいコードをクライアントがアクセスするページに埋め込んどけば、
BOINCみたいなことができるんじゃないか、というかできる。きっと。
onloadしてから別スレッドでまわせばストレスも(たぶんそんなに)ない(かもしれない)。


 そのうちそういう世界になるんじゃね?という気がしています。
 可能性としてありえるのは、アクセス数の多い検索サイトとか、
滞在時間の長いゲームのサイト側が勝手にその手の仕組みを埋め込んで、
ユーザのCPU時間を勝手に搾取するという、「勝手グリッド」みたいなこと。


 でもそれはそれで楽しい。

HTML5の仕様書を見て歳を感じる

 HTML3.2の頃を知る身としては、隔世の感があると本当に思う次第です。
世間はcanvasだvideoだと賑やかですが、個人的には廃止になった機能に目がいきます。

 HTML5のobsolete項を見ると、レイアウト系のattributeが結構削られています。
特に、table系要素のalign/valign等が削られているのを見ると、意地でもテーブルレイアウトの時代を終わらせるぜ、CSS万歳!という気概が感じ取れます。
 また、レイアウトとは違うけど、bodyのbgcolorやbody/tableのbackgroundが削られていたりします。
レガシーな人間としては、「うお、マジッスか!」と嫌でも思う。
CSSがあるのに必要かと言われると、全然、ですが。


 で、今回の(廃止の)ハイライトは、frame/frameset, marqueeタグでしょう。


 かつてHTML覚えたての人の作ったダサダサなページの見本といえば、
無意味なframe、謎のmarquee、どこかで拾ってきた鬱陶しいjavascriptというのが相場でした(勝手にそう思っている)。
javascriptは世界を席巻しましたが、われらがframeとmarqueeはあえなく時代遅れとなりました。合掌。


 蛇足ですが…


 そんな風に名指しで「使うなよ!」といわれちゃってるmarqueeタグなんですけど、地味にHTML401の仕様ではないんですね。
IEの独自実装を他ブラウザがパクったもの、だったはず。
 それなのにもかかわらず、わざわざ新しい仕様が「marquee廃止ね」って言うのは、何なのお前。何様よ?といいたくなりますね。なりませんか。そうですか。


 ま、使いたきゃ使えるんですけどね、frameもiframeで何とかできるし、
marqueeはCSS3に移っただけだしね。

IEEE754の分布について

 積年の謎が氷解した日。


IEEE754で表現される浮動小数の数値の分布はどうなっているのか。
表現可能な数値間の距離はそもそも一定なのか?一定じゃないのか?
感覚としては0を中心として数直線の両側にいくにつれてスカスカになりそうだけど…
一定じゃないなら、どんな感じになってるんだろうか?


結論を言うと、全く一定じゃなく、感覚が正解。


大学の授業でIEEE754は扱ったのだけど、その辺まで詳しい話は出てこなかった。


どうも大学で情報系を専攻している人たちはその辺まで突っ込んできちんと授業を受けているみたいですね。
というのも、「プログラマが知るべき97のこと」というオライリー本で計算誤差の説明のついで?に、
隣接する数値間の距離について言及されていました。


 で、さらに色々とググったら、こんなのとか、こんなのとか出てきた。素晴らしい。分かりやすい。
特に前者は数直線での数値の密度の模式図まである。


 そうなると次に気になるのは、そんなんで不都合ないのかということ。
もちろん丸めの誤差が、累乗の数字が大きくなるにつれてどんどん大きくなっていくというのは既に分かりやすい問題だけど。


 ううん、この辺の話は楽しいなぁ。なんだかわくわくする。情報科学科の方々は幸せだ。