2016-03-06

GCP ja night でCloud DatalabとBigQueryについて発表をしました

「AppEngine ja night」がいつの間にか名前が変わって「GCP ja night」になってました。今回は仕事でどうGCPを使っているかをネタにしました。


他の発表陣が軒並GKEを使ったシステム構成の話をする中で、自分だけGoogle Cloud Datalabでデータ解析チーム内での実験ノート共有手法の話をするという、非常に苦しい場ではありましたが何かの参考にしていただければ幸いです。一つ失敗したのは、Cloud Datalabの話をするのに、Cloud DatalabのベースとなっているJupyterの解説を飛ばしてしまった事ですかね。



このエントリーをはてなブックマークに追加

2015-12-15

自転車ポエム

このエントリはpyspa Advent Calendar 2015の15日目の記事です。pyspa Advent Calendarは「自分が好きなものや興味があるものをなんでもいいので書く」という事で、数年に一度あるか無いかのポエムです。

ロードバイクを入手してからの1年

2014年冬にCannondale SYNAPSE CARBON 5を購入、弱虫ペダルで言うと手嶋先輩が乗ってる奴。そして2015年は輪行を修得した事で行動範囲が一気に拡大した。輪行とは専用の袋に自転車をバラして格納して鉄道などの交通機関に乗る技である。
出張先での練習が可能に

2015年で印象に残った道

荒川サイクリングロード

自宅から5分でアクセスできたのもあり、一番良く走ったのがここ。葛西臨海公園と河口から40km付近の秋ケ瀬公園の間が普段の練習コース。
実際にはサイクリングロードでは無く緊急用河川敷道路として整備されているため舗装が良く幅員も広い。都内最強の平坦道ではなかろうか。左岸を堀切橋あたりから河口まで行くと片道10kmだが、途中にゲートが無く、ランナーとサイクリストしかいないためペースキープの練習にもってこい。日没後は闇に紛れた全身黒ずくめのランナーが出没するため危険。

江戸川自転車道

首都圏外郭放水路で有名な龍Q館に行くにはこの道が便利。江戸川の始点となる利根川も含めて都心まで100km走って関東平野の広大さを実感した。難点としては単調な道が続き景色に変化が無いため、10分で飽きる。いたる所で拡張工事がされているため、今後の整備に期待できそう。

「海まで127.5kmです」の看板、500m毎に立っていて親切?

渡良瀬川

利根川から入り群馬の市街地を経由して遡上して足尾銅山まで行った。観光地なので登りの練習をしながらも道の駅に寄ったり、渋い店構えの蕎麦屋で補給できる。わたらせ渓谷も美しい。足尾に差しかかった辺りからSIRENの舞台を彷彿とさせる昭和な世界が広がっており、味わいがあった。

あらゆる鉄が錆びている

三浦海岸

三浦海岸から三崎口へ抜けて城ケ崎公園へ。砂浜、キャベツ畑、風力発電機、魚屋と変化に富んだ牧歌的なコースで和む。幸運にも風が穏かな日に走れた。オススメのおみやげは鮪のみりん干し。

都民の森

その柔らかな響きとは裏腹に、斜度10%越えのつづら折りに殺されかけた難所。ヒルクライムの苦しさと共に楽しさに目覚めた場所でもある。

白馬 - 木崎湖周辺

北アルプス山麓グランフォンドの120kmコースに出場。生憎の雨でDNF(Don’t Finish)だったが、来年こそはゴールしたい。

自宅

新居に引っ越すと共に固定ローラーを導入、冬期の練習不足を解消するのが狙い。ただ、1歳の息子がチェーンを鷲づかみにするので運用は難しい……。分譲マンションだが、自転車を各住戸まで持っていく前提でエレベーターや共用スペースが設計されている物件なので気に入っている。

自転車レースを観戦しながら練習可能な夢の環境が実現

自転車の良さ

ペダルを踏めばどこまでも行ける、というシンプルな楽しさはもちろんあるが。自分の限界と否応無しに向き会わなければならない点も良い。無茶した所で巡航速度は上がらないし、速く走るためには練習するための時間、良いパーツを買うための収入が必要である。人生のリソース配分最適化を考える良い契機になった。

まとめ

みなさん自転車やりましょう。こちらからは以上です。

このエントリーをはてなブックマークに追加

2015-10-13

PyConJPで「アドネットワークのデータ解析チームを支える技術」という発表をしました

PyConJP 2015に登壇してきました。PyConJPについてはライブラリの使い方についてのセッションが多く、じゃあそれを使ってどうやって金を稼いでるか、というプロダクトベースの話は少なめな印象がありました。なので自分は逆張りで仕事の話をしてきました。
といっても発表で例に出した手法は "Online Advertising" で論文を探せば出てくるメジャーな奴なので、うちだけ特殊な事をやっている訳では無いです。 IMG_7502

発表資料


補遺

発表の途中で「BigQueryは謎テクノロジ」と端折ってしまいましたが、O'reillyのBigQuery本に数テラバイトを数秒でスキャンする方法は書かれています。興味がある方はそちらを参照してもらえれば。

Google BigQueryGoogle BigQuery
Jordan Tigani,Siddartha Naidu,Sky株式会社 玉川 竜司
オライリージャパン
売り上げランキング : 260401
Amazonで詳しく見る by AZlink

反省

カンファレンス1日目と2日目も発表資料の仕上げに追われていて、他の人の発表をしっかりと聴講する余裕が無かったのが本当に悔やまれる所。夜のパーティや二日目のコーヒーブレイクでも他の参加者と話す事もできず、ポスターセッションも行けずじまい。次回はカンファレンスが始まるまでに仕上げておくと心に固く誓ったのでした。

 Link



このエントリーをはてなブックマークに追加

2015-07-05

Thompson Samplingの実験的な評価

Thompson Samplingの実戦投入の参考になりそうなので次の論文を精読した。
内容はアルゴリズムの紹介、パラメータチューニングとそれによる損失の変化の実験結果、オンライン広告とリコメンドエンジンへの適用例など。以降、Thompson SamplingはTSと表記。

UCBとの比較

実験ではどのパターンも、途中まではUCBと同じ損失だが試行回数がある程度増えた所でTSの損失がUCBを下回っている。腕の数が多い程、報酬の差が小さい程UCBとパフォーマンスが分かれる点は後ろにずれる。
理由は書いてないが、UCBは一旦報酬が低い事がわかった腕も定期的に引くのでこういう結果になるのだろう。TSは報酬の期待値が収束した後は良い物しか引かない。

事後確率の調節

ベータ分布のパラメータaとbについてそれぞれα∈(2, 1, 0.5, 0.25) で割った値にした実験。0.25にすると傾向として損失は下がるが、損失が増える駄目なケースも増える。腕の性能評価を早めるので、誤って評価してしまうのだろう。バリアンスが高くなるので玄人向けのチューニングに見える。

報酬のフィードバック遅延に対するロバスト性

腕を引いて即時に報酬が観測できない事はシステムの制約上良くあるよね、という前段に続いて報酬のフィードバックが遅れた場合の実験結果が載っている。1000ステップ遅れた場合にUCBの損失は10倍近くなるのに対して、TSは6倍程度。TSの方が性能良いという結果。

オンライン広告におけるCTR予測との組みあわせ

Contextual Banditな話。CTRの事後確率をベータ分布では無く、ロジスティック回帰で平均を求め、ラプラス近似でガウス分布にした物を利用する。PRMLでラプラス近似を見た時は何に使うのか理解できなかったが、なるほど納得。

この論文に書いてない事

腕の報酬が変化するパターンの実験はしていない。広告配信では腕の性能が変化する事は考慮しなければならないので気になる所。報酬の変化を捉えるにはUCBの様に一旦低く評価された腕を再度引くしかけが必要になるので、期待報酬の分散を増やすか利用する観測値は直近の物に限定する、といった工夫が必要だろう。

このエントリーをはてなブックマークに追加

2015-06-26

ISAC TokyoでGPS/GNSS高精度測位の世界を垣間みた

今年のInternational Space Apps Challenge、グローバル審査の結果まで出たので顛末を書きます。結果は東京ローカル審査で優秀賞を頂いて、グローバル審査に進んだものの敗退といった所です。

International Space Apps Challenge(ISAC)とは

今年で4回目となるNASA主催の国際ハッカソンで、今年は世界133ヶ所で行なわれた模様。地球観測衛星から得られたデータを有効活用したり、世界規模の問題解決に取り組むといったテーマが与えられた中でチームを作りハードウェアやWebサービスの開発に取り組みます。

何を作ったか

SENSOR YOURSELF テーマを選び、屋外用の安価な高精度測位モジュールを作りました。モチベーションとしては既存の機器、例えば農機や建設機器のオプションとして売られている物があまりに高いため、高精度測位の普及が進んでいない。安価に実現可能な事と利用法を示せれば、廉価品を作るメーカーが出てきたりスマホだけで利用可能になって嬉しいのでは、という話です。農機になぜ高精度測位が必要かと言うと、例えば植えた稲を踏まないように自動運転させるためだそうで。

作りとしてはRaspberry Pi + GPS/GNSS受信機 + ケースです。ネットワーク必須なので、そこはテザリングで。スマホ内蔵の受信機の信号が直接使えるようになればラズパイも受信機も不要なのですが、iOSはCore Location経由でしか位置情報にアクセスできないので不可能なのと、Androidでも特定の機種に限られるのでこの形に。測位モジュールを作るだけでなく、有効なユースケースを提示する予定だったのですがハッカソン中に良い案が思いつかず。

これでどの程度の精度が出るかと言うと、単独測位の誤差が10メートル程度なのに対して誤差1 ~ 10cm程度です。デモページで取得したデータをプロットしているのですが、1cm程度に収まっています。ただ、これは建物の屋上の受信機で測定したデータなので(Height 117m)地上でやるよりも精度が出ています。
デモのスクリーンショット

READMEに載せた構成図
 +------------------+          +--------------------------------------+                            
 | Smartphone       |          | RaspberryPi                          |                            
 | +--------------+ | Location |  +------------+       +-----------+  |           +-----------------+
 | |   Browser    <----(HTTP)-----+ API Server <-(TCP)-+  RTKLIB   <----(Serial)--+ GNSS/GPS Device |
 | +------^-------+ |          |  +------------+       +-----^-----+  |           +-----------------+
 +--------|---------+          +-----------------------------|--------+                            
          |                                                  |                                     
          |                                               (NTRIP)                                     
          |                                                  |                                     
 +--------+---------+                               +--------+---------+                           
 | Web Server       |                               |  Base Station    |                           
 | HTML, JavaScript |                               |                  |                           
 +------------------+                               +------------------+                           
 Serve User Interface
Submitしたプロジェクトページ

最近はGPSでは無くGNSSと呼ぶらしい

今回のハッカソンで勉強になったのがGPS周りの技術。基本的な所ではGPSは米軍の衛星測位システムを指すが、ロシアのGLONASSやEUが稼動準備中のGalileoと利用可能な衛星測位システムは複数存在するため、今はGPSでは無く総称のGNSS(Global Navigation Satellite System)を使うのが時流らしい。といっても文献ではGPS/GNSSと併記しているパターンが一番多かったので、この記事でも併記にしました。

単独測位と高精度測位

スマートフォンでWi-Fiを切った状態での位置情報の正確さ、地図上で小さな通りだと一本ずれてしまう事は良くあります。受信機単体測位による精度は良くて10メートルとされているので、普段の感覚通りですね。この時、4つ以上の衛星との距離を元に3次元空間上の位置を計算しています。距離は信号伝播時間と光速度の積で求まります。3点からの距離さえわかれば位置は計算できるはずですが、受信機の時計補正のために4台目の衛星を必要としています。

この精度を上げる方法がいくつかあり、DGPSだとメートル単位、RTKだとセンチメートル単位での測位が可能になります。
  • DGPS (Differential GPS) 
  • PPP (Precise Point Positioning) 
  • RTK (Real Time Kinematic GPS)
今回のハッカソンでは海洋大のRTK基準局が使えるとの事で、RTKにしました。ただ、RTKの基準局の有効範囲は15km程度なので、基準局がどこにでもある時代にならないとこの方式は普及しないのでは、とも思ったり。
出展: RTK-GPSの原理と応用

渋谷とIngressとマルチパス

これらの高精度測位が使えれば、常に数十メートルのドリフト(位置のずれ)によって苦戦を強いられている渋谷IngressエージェントもUltra Strikeが有効活用できそうですが、ビルの谷間では上手くいきません。前述の高精度測位手法は、誤差を発生させる要因の1つである反射波(マルチパス)をケアしないからです。ハッカソン会場は秋葉原だったのですが、地上においてRTK方式では一度も位置がFixしませんでした。RTK方式が利用できるのは、空が開けた場所に限定される様です。

ハッカソン参加で得られた物

1年目は二行軌道要素(TLE)について知り、2年目は太陽光パネルの発電量計算モデルと電力買い取りサービス、Modis(地球観測システム)のデータとGIS。今年はGPS/GNSS。普段の仕事では組まない人とプロジェクトをやると新しい知見が得られて面白い。あと、気になってるけど触った事のないライブラリを試すのに良くて、今年はRxJSを投入。毎年何らかの学びがあるので楽しみにしています。

状況です。

関連プロジェクト

どちらも専用ハードで小型化を実現していて凄い。海外だとRTK基準局がそこら中にあるのか、もしくは基準局を自分で立てて運用できるGPSおじさん向けのプロダクトかもしれない。

参考文献

坂井 丈泰: GPS/GNSSの基礎知識
土井下健治, 村本英一, 神田俊彦: 建設機械への ICT 応用
浪江 宏宗: RTK-GPSの原理と応用
安田 明生 et al, 東京湾仮想RTK基準局ネットワーク

このエントリーをはてなブックマークに追加