<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1559015946463351574</id><updated>2012-01-02T00:40:26.762+09:00</updated><category term='研究'/><category term='プログラミング'/><category term='NLP Jubatus'/><category term='NLP'/><category term='python'/><category term='写真'/><category term='本'/><title type='text'>unnonouno</title><subtitle type='html'>写真とカメラとレンズと，たまに研究</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-2426032503261112014</id><published>2012-01-01T23:59:00.007+09:00</published><updated>2012-01-02T00:40:26.771+09:00</updated><title type='text'>2011年振り返りと2012年こんにちは</title><content type='html'>昨年度もあっという間でした，ということは特になくて色々変化の多い一年でした．&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;転職しました&lt;/h3&gt;&lt;br /&gt;今年一番大きかったのはこれでした．まぁ，そうですね．実際には去年の年末にほとんど決まっていて，年初から引き継ぎとか，それまでの仕事の整理（特許と論文とソースコードとか）などでだいぶ時間を取られました．&lt;br /&gt;環境は人を変えるとはよく言いますが，それを痛感した1年でした．とにかく周りの人が超人みたいな人だらけなので，盗むべきところは盗みつつ，常にディスカッションして考えを熟成させ，自分が周りにできることは何か，常に色々考えました．大変でしたが実りのあった一年だったと思いたいです．&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Jubatusをリリースしました&lt;/h3&gt;&lt;br /&gt;転職後すぐにアサインされたのがJubatusでした．OSSにはあまり明るくないし，ソフトウェアのリリースも初めての経験でしたが，転職後半年でこういう機会に出会えたのは良かったと思います．リリース前後はやっぱり慌ただしくて，NTT研の人たちといろいろやりとりしたり，リリース後はいろんなセミナーで発表したりしました．&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;発表とかセミナーとか&lt;/h3&gt;&lt;br /&gt;今年は論文は控えめでした．会社の状態だとか，論文を書くコストを考えると，なかなかそこには注力できません．ただ前職でやっていたテーマを，前職の先輩がたくさん発表してくれたのは良かったです．&lt;br /&gt;代わりにJubatus関係でたくさんセミナーで話しました．今まではどちらかと言えば研究者との対話が多かったですが，もっとエンジニアやお客さんに近い所で話して，作ったソフトウェアやそれに関する技術を世の中にちゃんと広めないとという気持ちもありました．また，会社のゴールを考えてもこれはやってよかったなと思います．&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;C++とか&lt;/h3&gt;&lt;br /&gt;3年間書き続けたJavaを捨てて，久しぶりのC++に戻って来ました．社内ライブラリが充実していたので，想像してたより苦労は無いです．みんな私よりも良いコードを書くので，いつも勉強させられます．テストをたくさん書いたり，モジュールの粒度を考えたり，プログラミングスタイルもずいぶん改められました．&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;その他&lt;/h3&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;少ないと思っていましたが，写真はなんだかんだで6000枚くらい撮ってました&lt;/li&gt;&lt;li&gt;引っ越してジムを辞めてから運動量が激減したので，皇居ランをしました&lt;/li&gt;&lt;li&gt;新しい自転車を買いました！　9年ぶりの新車&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;さて，今年は転職2年目です．昨年蒔いた種がいろんな形で花開くといいな．蒔いた種からちゃんと収穫できるといいな，と思います．その他にもたくさん変化のある年になりそうです．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-2426032503261112014?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/2426032503261112014/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2012/01/20112012.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2426032503261112014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2426032503261112014'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2012/01/20112012.html' title='2011年振り返りと2012年こんにちは'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-4824221223549828242</id><published>2011-12-31T02:39:00.000+09:00</published><updated>2011-12-31T02:39:33.075+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='本'/><title type='text'>今年読んだ本5選</title><content type='html'>読書記録を&lt;a href="http://mediamarker.net/u/unnonouno/"&gt;MediaMaker&lt;/a&gt;というところにつけているのですが，今年は30冊くらい読んだみたいです．実際は，ここに書いてないのもあるので，もう少しあるかな．今年読んだ本のベスト5を紹介します．&lt;br /&gt;&lt;br /&gt;&lt;table  border="0" cellpadding="5"&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068560/unnonouno-22/" target="_top"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51b4P511wTL._SL160_.jpg" border="0" alt="アジャイルサムライ−達人開発者への道−" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;font size="-1"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068560/unnonouno-22/" target="_top"&gt;アジャイルサムライ−達人開発者への道−&lt;/a&gt;&lt;br /&gt;Jonathan Rasmusson 西村 直人 &lt;br /&gt;&lt;br /&gt;オーム社  2011-07-16&lt;br /&gt;売り上げランキング : 1557&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274068560/unnonouno-22/" target="_top"&gt;Amazonで詳しく見る&lt;/a&gt;&lt;/font&gt; &lt;font size="-2"&gt;by &lt;a href="http://www.goodpic.com/mt/aws/index.html" &gt;G-Tools&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;アジャイル開発に関するエッセンスをとてもよく凝縮し，それでいて実例や対話を交えて極めて明快に書かれています．訳本なのに非常に日本語も読みやすく，すんなり読めます．「小さなチーム」だとか「職能横断型チーム」だとか，普段自分が重要視していることも書かれていました．リソース（お金や時間）と顧客と不確定要素の関わる仕事に従事する人全員にお勧めします．例えば，締め切りがあって，査読者や審査員や指導教官がいて，実験が上手くいかないかもしれない，というような問題を抱えている人種の人達のことです！&lt;br /&gt;事実を誤魔化さない，上手くいかないことは上手くいかない，それをどうマネージして最善を尽くせるか．&lt;br /&gt;&lt;br /&gt;&lt;table  border="0" cellpadding="5"&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/415209236X/unnonouno-22/" target="_top"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51v4wtNboXL._SL160_.jpg" border="0" alt="IBM 奇跡の“ワトソン”プロジェクト: 人工知能はクイズ王の夢をみる" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;font size="-1"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/415209236X/unnonouno-22/" target="_top"&gt;IBM 奇跡の“ワトソン”プロジェクト: 人工知能はクイズ王の夢をみる&lt;/a&gt;&lt;br /&gt;スティーヴン・ベイカー 金山博・武田浩一（日本IBM東京基礎研究所） &lt;br /&gt;&lt;br /&gt;早川書房  2011-08-25&lt;br /&gt;売り上げランキング : 20676&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/415209236X/unnonouno-22/" target="_top"&gt;Amazonで詳しく見る&lt;/a&gt;&lt;/font&gt; &lt;font size="-2"&gt;by &lt;a href="http://www.goodpic.com/mt/aws/index.html" &gt;G-Tools&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;IBMのグランドチャレンジでクイズ王にコンピュータで勝利した，プロジェクト・ワトソンの裏側のノンフィクション．クイズに答えるというタスクがいかに難しいかを人に説明しようとすると，なかなかこれが難しい．この本を読めばそれが非常に明快にわかります．自然言語処理に従事する身からすれば，無謀とも言えるチャレンジ，これがいかに始まったか，どうしてGOが出たのか，どういう覚悟でこのプロジェクトに挑んだのか．&lt;br /&gt;そして何よりも，この本の書きぶりが素晴らしい．まるで小説でも読んでいるかのような書きぶりです．純粋に読み物としても面白いです．&lt;br /&gt;&lt;br /&gt;&lt;table  border="0" cellpadding="5"&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4152087994/unnonouno-22/" target="_top"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51rvYPq7hUL._SL160_.jpg" border="0" alt="デザイン思考の道具箱―イノベーションを生む会社のつくり方" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;font size="-1"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4152087994/unnonouno-22/" target="_top"&gt;デザイン思考の道具箱―イノベーションを生む会社のつくり方&lt;/a&gt;&lt;br /&gt;奥出 直人 &lt;br /&gt;&lt;br /&gt;早川書房  2007-02&lt;br /&gt;売り上げランキング : 12237&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4152087994/unnonouno-22/" target="_top"&gt;Amazonで詳しく見る&lt;/a&gt;&lt;/font&gt; &lt;font size="-2"&gt;by &lt;a href="http://www.goodpic.com/mt/aws/index.html" &gt;G-Tools&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;製品開発をどのようにしてすすめるべきかについて書かれた本．まずプロトタイプを作り，ちゃんと作りこむ前にしっかり吟味することがすすめられています．プロト作りには何でも活用して，簡単なモックでもよい．こうした話は，今読んでいる「アントレプレナーの教科書」にある顧客開発モデルや，「アジャイルサムライ」のようなアジャイル開発手法の全てに共通して現れることがわかります．何ができるか吟味する，小さな開発サイクルを効率よく回す，顧客と対話する確認する，作り直しを恐れない．大きな失敗をいかに回避できるか，ということがいずれでも主要なテーマとなっています．&lt;br /&gt;また，「技術のコモディティー化」というキーワードもとても興味を引きました．高等教育が進んで，インドや中国も高い技術を持つようになってきて，単に技術レベルだけで勝負できる時代ではないということです．試行錯誤できるかがこれからの製品開発の鍵になるのではないでしょうか．&lt;br /&gt;&lt;br /&gt;&lt;table  border="0" cellpadding="5"&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4121020456/unnonouno-22/" target="_top"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41HMJFps7iL._SL160_.jpg" border="0" alt="競争と公平感―市場経済の本当のメリット (中公新書)" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;font size="-1"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4121020456/unnonouno-22/" target="_top"&gt;競争と公平感―市場経済の本当のメリット (中公新書)&lt;/a&gt;&lt;br /&gt;大竹 文雄 &lt;br /&gt;&lt;br /&gt;中央公論新社  2010-03&lt;br /&gt;売り上げランキング : 4457&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4121020456/unnonouno-22/" target="_top"&gt;Amazonで詳しく見る&lt;/a&gt;&lt;/font&gt; &lt;font size="-2"&gt;by &lt;a href="http://www.goodpic.com/mt/aws/index.html" &gt;G-Tools&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;日本人は，先進国の中でも突出して競争を嫌う傾向にある．公平と競争をキーワードに，様々な調査結果やデータを提示しながら，特に日本人がこれらのキーワードをどう捉えているかが非常に明快に書かれています．他の新書にはなかなか見られないくらい，とても良く既存文献を参考にし，データを的確に引用し，非常に明快な論理を展開していて，それでいて平易に書かれています．派遣切りや，格差社会，医療，教育といった現代社会でとかく争点になるテーマに関しても論理的な切り口で言及されていて，こうした問題を自分がどう捉えるかに関してよい指針になりました．&lt;br /&gt;&lt;br /&gt;&lt;table  border="0" cellpadding="5"&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/412101345X/unnonouno-22/" target="_top"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41QANW8529L._SL160_.jpg" border="0" alt="考えることの科学―推論の認知心理学への招待 (中公新書)" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;font size="-1"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/412101345X/unnonouno-22/" target="_top"&gt;考えることの科学―推論の認知心理学への招待 (中公新書)&lt;/a&gt;&lt;br /&gt;市川 伸一 &lt;br /&gt;&lt;br /&gt;中央公論社  1997-02&lt;br /&gt;売り上げランキング : 17460&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/412101345X/unnonouno-22/" target="_top"&gt;Amazonで詳しく見る&lt;/a&gt;&lt;/font&gt; &lt;font size="-2"&gt;by &lt;a href="http://www.goodpic.com/mt/aws/index.html" &gt;G-Tools&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;「人間の推論」をテーマとして，推論に関わる様々な科学，すなわち記号論理や統計，認知心理学といった様々な視点から議論されています．そして，いずれの学問を持ってしても，人間の「推論」をモデル化するには不十分であることが，様々な実験データからうかがい知ることができます．「言葉」という「推論」とも密接に関わる現象を扱う立場としては，こうした人間の思考に関わる現象にももちろん興味はあります．個人的な立場としては，人間の「模倣」を必ずしもよしとは思いませんが，それをよく観察することは重要だと思っています．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-4824221223549828242?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/4824221223549828242/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/12/5.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/4824221223549828242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/4824221223549828242'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/12/5.html' title='今年読んだ本5選'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-316331105390038286</id><published>2011-12-28T01:36:00.002+09:00</published><updated>2011-12-28T02:17:20.796+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NLP Jubatus'/><title type='text'>第6回さくさくテキストマイニングで発表しました</title><content type='html'>少し間が開いてしまいましたが、先々週末のさくテキでJubatusの紹介をしました。&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_10688219" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/unnonouno/jubatus6" target="_blank" title="Jubatusの紹介@第6回さくさくテキストマイニング"&gt;Jubatusの紹介@第6回さくさくテキストマイニング&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/10688219" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/unnonouno" target="_blank"&gt;Yuya Unno&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;内容は、技術的な内容をかなり省いて、機械学習自体のチュートリアル、Jubatusが既存の機械学習ライブラリと何が違うのか、どういう応用ができそうかという点に絞りました。最近、もっと世の中の人に機械学習の恩恵を受けて欲しいと、割りと真面目に考えるようになったので、いろんな所でキャンペーンしています。機械学習だとか自然言語処理だとかは、個人的には明らかに便利な面があるのですが、まだ研究者のツールを抜け出て無い印象があって、そこのブレークスルーを作れればもっと新しいアイデアが出てくるんじゃないかと思います。&lt;br /&gt;&lt;br /&gt;今回発表することになった発端は、前職の先輩である那須川さんの著書を、この勉強会の教科書に指定されていたので、そもそも那須川さんに話してもらったらいいんじゃないかということでボクが声をかけました。この書籍も、テキストマイニングに対する世の中のニーズや、利用シーンなどがよくまとまっていておすすめです。&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4501542209/unnonouno-22/" target="_top"&gt;&lt;img alt="テキストマイニングを使う技術/作る技術―基礎技術と適用事例から導く本質と活用法" border="0" src="http://ecx.images-amazon.com/images/I/51RricCy8CL._SL160_.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;span&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4501542209/unnonouno-22/" target="_top"&gt;テキストマイニングを使う技術/作る技術―基礎技術と適用事例から導く本質と活用法&lt;/a&gt;&lt;br /&gt;那須川 哲哉 &lt;br /&gt;&lt;br /&gt;東京電機大学出版局  2006-11&lt;br /&gt;売り上げランキング : 146344&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4501542209/unnonouno-22/" target="_top"&gt;Amazonで詳しく見る&lt;/a&gt;&lt;/span&gt; &lt;span&gt;by &lt;a href="http://www.goodpic.com/mt/aws/index.html"&gt;G-Tools&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;最近、テキストマイニングという言葉をよく聞くようになったのですが、ちゃんと利用シーンがわかって作られているのか、どういう顧客に利用してもらいたいのかというのが明確になっていない例をたまに見ます。自分の会社でもテキスト解析のご要望が増えてきていて、エンドユーザーの視点、利用シーンやイメージなどを末端のエンジニアが理解するのにもこの本は役立つと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-316331105390038286?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/316331105390038286/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/12/6.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/316331105390038286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/316331105390038286'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/12/6.html' title='第6回さくさくテキストマイニングで発表しました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5786513932551761249</id><published>2011-11-25T23:13:00.000+09:00</published><updated>2011-11-25T23:13:13.977+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='プログラミング'/><title type='text'>re2のxxxNの使い方</title><content type='html'>&lt;a href="http://code.google.com/p/re2/"&gt;re2&lt;/a&gt;はGoogleが公開しているC++用の正規表現ライブラリです。速度も速い（らしい）し、ちゃんと日本語一文字も"."でマッチしてくれるので、社内でも好んで使われています。&lt;br /&gt;&lt;br /&gt;たくさん機能があるようなんですが、Web上であまり情報がなかったり、詳細はheaderファイル見てね！みたいなことが書かれていて、なかなかマスターするのが難しいライブラリです。特に、マッチ箇所（いわゆるgroup）が複数あるときにどうすればいいのかすぐにわかりません。私も以前ここではまって、色々調べてどうにか動いたことがありました。ちょうど&lt;a href="http://chezou.wordpress.com/2011/11/25/google%E8%A3%BD%E3%81%AE%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3re2%E3%82%92%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%A7%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/"&gt;@chezou&lt;/a&gt;さんが困っていたようなので、メモのつもりで晒してみましょう。&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;説明するより、コード読むがはやし、ということでサンプルを！&lt;br /&gt;&lt;br /&gt;&lt;pre class="c++:nogutter" name="code"&gt;#include &amp;lt;re2/re2.h&amp;gt;&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;  string pat = "(.)(.)(.)(.)";&lt;br /&gt;  string text = "hoge";&lt;br /&gt;                                                                                                                                                                         &lt;br /&gt;  re2::RE2 re(pat);&lt;br /&gt;  re2::StringPiece input(text);&lt;br /&gt;  int groupSize = re.NumberOfCapturingGroups();&lt;br /&gt;  vector&amp;lt;re2::RE2::Arg&amp;gt; argv(groupSize);&lt;br /&gt;  vector&amp;lt;re2::RE2::Arg*&amp;gt; args(groupSize);&lt;br /&gt;  vector&amp;lt;re2::StringPiece&amp;gt; ws(groupSize);&lt;br /&gt;  for (int i = 0; i &amp;lt; groupSize; ++i) {&lt;br /&gt;    args[i] = &amp;amp;argv[i];&lt;br /&gt;    argv[i] = &amp;amp;ws[i];&lt;br /&gt;  }&lt;br /&gt;  re2::RE2::PartialMatchN(input, re, &amp;amp;(args[0]), groupSize);&lt;br /&gt;  for (int i = 0; i &amp;lt; groupSize; ++i)&lt;br /&gt;    cout &amp;lt;&amp;lt; ws[i] &amp;lt;&amp;lt; endl;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;基本的にxxxN関数を使えばOKのようです。まず、RE2オブジェクトのgroupの数はNumberOfCaptureingGroupsで取れます。xxxN関数には、書き込み先のArgへのポインタの配列を渡す必要があります。なので、Argポインタのvector（これを関数に渡す）と、Arg実態のvectorを作ります。実態の方には、それが書き込む先のStringPieceへのポインタを代入しておくといいようです。ここは、intポインタなどを代入すれば、intに変換されて代入されるでしょう。この辺は、なんとなく書いたのでもっと良い書き方があるのかもしれません。これでマッチさせれば、最終的にStringPieceのvectorに結果が代入されました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5786513932551761249?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5786513932551761249/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/11/re2xxxn.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5786513932551761249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5786513932551761249'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/11/re2xxxn.html' title='re2のxxxNの使い方'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-483145143257631444</id><published>2011-10-29T13:44:00.001+09:00</published><updated>2011-10-29T14:10:26.668+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='プログラミング'/><title type='text'>pficommonをちょっとだけ紹介</title><content type='html'>報道機関の発表の通り、10/27日に分散オンライン機械学習基盤&lt;a href="http://jubat.us/"&gt;Jubatus&lt;/a&gt;を発表しました。これに関しても書きたいことは山ほどあるのですが、来週&lt;a href="http://www.zusaar.com/event/165003"&gt;Jubatus Workshop&lt;/a&gt;があるので、それまでは秘密です（ウソです、聞かれたら答えます）。&lt;br /&gt;&lt;br /&gt;さて、同時に公開されたのが&lt;a href="http://pfi.github.com/pficommon/"&gt;pficommon&lt;/a&gt;です。これは、弊社内で使われていた便利ライブラリで、あまりの便利さにこれがないと開発できないため、Jubatusでも使われています（もちろんSedueでも）。そして、Jubatus公開に伴い公開となりました。pficommonは明日からでも使うべきなライブラリなので、先にこちらを紹介します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;pficommonは様々なライブラリからなる、複合的なライブラリです。&lt;br /&gt;今日は個人的にお気に入りの、&lt;br /&gt;&lt;ul&gt;&lt;li&gt;xhtml_cgi&lt;/li&gt;&lt;li&gt;json&lt;/li&gt;&lt;/ul&gt;の２つを紹介します。&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;xhtml_cgi&lt;/h3&gt;&lt;br /&gt;実験用のコードなどを書くと、たくさんログを出力したくなることがあると思います。しかし、例えば1行に収まらないとか表にしたいことはよくあります。私は昔からHTMLで出力していたのですが、いかんせんcoutで出力するのは面倒、かと言ってフロントエンドをpythonで書いてrpcまでしだすと面倒・・・。実際、私は修論のとき検索をやっていたのですが、このためだけにpython, django, rpcを使って大変面倒でした。これを一気に解決するのがxhtml_cgiです。&lt;br /&gt;&lt;br /&gt;まず、&lt;a href="http://pfi.github.com/pficommon/network/cgi.html"&gt;cgiのサンプル&lt;/a&gt;を見てください。なんというシンプルさ。さらに、pficommonには&lt;a href="http://pfi.github.com/pficommon/network/cgi.html#http"&gt;http server&lt;/a&gt;が実装されているので、これを使うと単独で動くhttp serverができあがります。コンパイルして実行すればhttp serverとして動きます。インタラクティブに引数を変えて実験などをしたいとき、この仕組を使うとhttp経由で実験ができます。Apacheとかいりません。正直、実験用のコードでrpcなんてしたくないんですね。&lt;br /&gt;&lt;br /&gt;さらに画期的なのが、この&lt;a href="http://pfi.github.com/pficommon/network/cgi.html#xhtml-cgi"&gt;xhtml_cgi&lt;/a&gt;です。このサンプルを見てください。C++の黒魔術を使うことで、なんとC++のソースがテンプレートライブラリ化するのです。単なるC++のソースなので、一部を関数にして使いまわしたりも可能です。あとは適当に書くだけで、簡単なデモは出来上がり。先日のYANSの時も、こんな感じで作っていました。&lt;br /&gt;&lt;br /&gt;おまけで、サンプルとして&lt;a href="https://github.com/unnonouno/mecab-cgi"&gt;http経由でmecabの実行結果を確認するプログラム&lt;/a&gt;を書いて見ました。これくらい簡単に書けます。&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;json&lt;/h3&gt;&lt;br /&gt;社内的にも最も使われるライブラリの一つが&lt;a href="http://pfi.github.com/pficommon/text/json.html"&gt;json&lt;/a&gt;です。上記のcgiなどを書いていると、ちょっとした事をjsonでやりとりしたくなったりします。それ以外にも、例えばtwitter APIのjsonを読みたくなったり、別プログラムの出力をjsonで吐いて取り込みたくなります。ここで便利なのが、jsonライブラリ。pficommonのjsonライブラリは、テンプレートとserialization機能で、かなり便利に使えます。&lt;br /&gt;&lt;br /&gt;jsonの読み込み・書き込みはは、streamから取ってくるだけでおしまし。&lt;br /&gt;&lt;br /&gt;&lt;pre class="c++:nogutter" name="code"&gt;json js;&lt;br /&gt;&lt;br /&gt;stringstream ss;&lt;br /&gt;ss&amp;lt;&amp;lt;js;&lt;br /&gt;&lt;br /&gt;json ks;&lt;br /&gt;ss&amp;gt;&amp;gt;ks; // js==ks&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;値の取り出しは、直感に従って書いて、最後にjson_castすればOK.&lt;br /&gt;&lt;br /&gt;&lt;pre class="c++:nogutter" name="code"&gt;cout &amp;lt;&amp;lt; json_cast&amp;lt;string&amp;gt;(js["user"]["profile"]) &amp;lt;&amp;lt; endl;&lt;br /&gt;&lt;/pre&gt;最後に、jsonを何かしらの構造体にマップするのがserialize機構です。&lt;a href="http://pfi.github.com/pficommon/text/json.html#id5"&gt;ここのソース&lt;/a&gt;を見てください。serialize自体は、例えばバイナリ形式でファイルに保存するのに使いますが、ここでは任意のデータ型をjsonへシリアライズ・デシリアライズできます。これは単に構造体中にserialize関数を作れば、via_jsonとto_jsonでstreamから変換ができるようになります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以上、簡単ですが2つ紹介しました。それ以外にもスマートポインターやスレッド、msgpack_rpcなど便利なライブラリがたくさん含まれます。他の機能に関しても、せっせと @tanakh さんが紹介記事を書いていると思います。ドキュメントはありますが、ちゃんと書かれていない機能や、使い方がわからなくなったらソースや単体テストを参照すればだいたい分かる（たぶん）と思います。研究用のプログラムなどでも大変活躍すると思いますので、是非ご活用ください。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-483145143257631444?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/483145143257631444/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/10/pficommon.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/483145143257631444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/483145143257631444'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/10/pficommon.html' title='pficommonをちょっとだけ紹介'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-1014767498563281734</id><published>2011-10-22T01:43:00.000+09:00</published><updated>2011-10-22T01:43:04.743+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>社内セミナーで形態素解析について話しました</title><content type='html'>持ち回りの社内セミナーが自分の番になったので、形態素解析についてまとめてみて、発表しました。係り受け解析入門に引き続き、自然言語処理チュートリアルシリーズ第２弾になります。結構ボリュームがあって、力作になってます。&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_9805912"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/pfi/ss-9805912" title="形態素解析の過去・現在・未来" target="_blank"&gt;形態素解析の過去・現在・未来&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/9805912" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/pfi" target="_blank"&gt;PFI Marketing &lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;今回の狙いは３つくらいありました。&lt;br /&gt;ひとつは自分自身昔の文献などを読んだことがなかったので読んでみたこと。見ると、昔は多くの論文を企業の人が書いていて驚きます。初期の文献で引用したものはほとんどが企業系研究者の方の論文です。日本語入力の文脈で研究されていたからなのかな、という気がします。&lt;br /&gt;もうひとつは現在の問題点と問題意識をまとめる。書いたとおり、アプリケーションに対して最適なことをすべき、という思いがあります。それは単にアプリケーションごとに形態素解析器を作るべき、ということではないです。そもそも形態素解析というソリューションは適切ですか？という問いかけです。実際に弊社では、普通の人が形態素解析するところで形態素解析しないで処理している所も幾つかあります。&lt;br /&gt;最後は、研究者とエンジニアのマッチングです。以前より研究者は企業の問題意識を共有していない、企業は最新の研究に興味がない、という悲しい状態にあると思ってました。自分自身は研究者とのコネクションもあり、またPFIとしては様々なエンジニアの方とコネクションがあるので、ここで発表したらお互いに意識や知識を共有できるかな、と思うところもありました。結果的には、反応を見るかぎり様々な業種の方に聞いていただけたのかなと思っています。&lt;br /&gt;&lt;br /&gt;当日、視聴していただいた皆様は、どうもありがとうございました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-1014767498563281734?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/1014767498563281734/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/10/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1014767498563281734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1014767498563281734'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/10/blog-post.html' title='社内セミナーで形態素解析について話しました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-2264092960337644198</id><published>2011-10-04T00:19:00.003+09:00</published><updated>2011-10-04T00:22:54.575+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>NLP若手の会で発表しました</title><content type='html'>会社のブログにも書いたのですが、9/21, 22にNAISTで開催された&lt;a href="http://yans.anlp.jp/modules/menu/main.php?page_id=105&amp;op=change_page"&gt;NLP若手の会シンポジウム&lt;/a&gt;で発表してきました。私は幸運にも最優秀奨励賞をいただきました。投票してくださった皆様どうもありがとうございます。発表資料はこちら。&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_9369041"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/unnonouno/yans2011" title="N-gram統計量からの係り受け情報の復元 (YANS2011)" target="_blank"&gt;N-gram統計量からの係り受け情報の復元 (YANS2011)&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/9369041" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/unnonouno" target="_blank"&gt;Yuya Unno&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;さて、ちょっと裏話でも書きます。もともと発表する気（も時間も）はなかったのですが、プログラム委員ということでどちらにしろ奈良に行くのと（これは後に案外みんな来てないことがわかった）、最近開発＆案件続きでちょっと研究もやりたいねということで、急遽発表ネタを捻出することになりました。特に検索クオリティを上げるような面白いネタはないだろうか。以前から確率的単語分割で検索品質を上げるという話があったのですが、これを確率的構文解析に適用したら・・・。単語境界情報のみだと、スキップのある部分文字列検索に自然な適応ができません。係り受け関係というのは、ある意味こうしたスキップのある構造に対する答えの気がしてきます。長い複合語などの検索がやりやすくなるのでは。そういう風な議論から話が始まりました。&lt;br /&gt;&lt;br /&gt;発表は、私がネタを振って、みなさんの考えを色々引き出す感じで行いました。発表する中で気になったのは、文の「構造」をどういう風に捉えているのかということでした。文が、「構造」を持っている、つまりシーケンス以上の情報を持っているということはおそらく同意が取れると思うのですが、その「情報」がなんなのか、どう表現できるのかについては十人十色の考えを持っているようです。係り受けのような表現（全域木）もあれば、句構造にように中間のノードを付与する表現方法もあります。でも、実はこれらの幾つかが同じ情報の別表現（一対一対応がとれる）だったりもするし、グラフ構造のように視覚的に表現しやすい必要もないのかもしれない・・・。こうした構造のもつ情報、また表現方法などを探ると、文に対してもう少し別の見方が見つかるんじゃないのか、というのが今回思ったことでした。また、発表の途中で松本先生がいらっしゃって、文字単位の係り受け表現についていろいろ教えていただけたことも収穫でした。たまたま、こうした研究を以前やっていらっしゃったらしく、取り扱いの面倒な現象をたくさん教えていただけました。その他にも、今回は知り合いの研究者の方がたくさんいらっしゃって、論文やらアイデアやらをたくさん教えていただき、感謝です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-2264092960337644198?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/2264092960337644198/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/10/nlp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2264092960337644198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2264092960337644198'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/10/nlp.html' title='NLP若手の会で発表しました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-8870064035154205873</id><published>2011-09-03T21:53:00.001+09:00</published><updated>2011-09-03T21:56:05.792+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>ACL2011読み会で発表してきました</title><content type='html'>今日は、サイボウズ・ラボさんにおじゃまして、ACL2011読み会で発表しました&lt;br /&gt;&lt;br /&gt;今日読んだ論文はこれです。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Exploiting Web-Derived Selectional Preference to Improve Statistical Dependency Parsing.&lt;/b&gt;&lt;br /&gt;Guangyou Zhou, Jun Zhao, Kang Liu, Li Cai.&lt;br /&gt;ACL2011. [&lt;a href="http://aclweb.org/anthology-new/P/P11/P11-1156.pdf"&gt;pdf&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;発表スライドはこちらです。&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_9115473" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/unnonouno/acl2011-exploiting-webderived-selectional-preference-to-improve-statistical-dependency-parsing" target="_blank" title="ACL2011読み会 Exploiting Web-Derived Selectional Preference to Improve Statistical Dependency Parsing"&gt;ACL2011読み会 Exploiting Web-Derived Selectional Preference to Improve Statistical Dependency Parsing&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/9115473" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/unnonouno" target="_blank"&gt;Yuya Unno&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;内容はすごい簡単です。一言で言えば、単語の出現確率のPMIをgraph baseの係り受け解析の特徴量にいれたら精度が上がりました。これだけ。でも、これだけ主張が短くてはっきりしていて、アイデアも適用方法も明確なのは良いと思いました。一方で、いかにも誰かやってそうな方法で、既存研究ないのかという方が気になる論文です。&lt;br /&gt;&lt;br /&gt;さて、もうちょっとちゃんと説明しましょう。係り受け解析についての詳細は割愛します。文中の単語の係り受け関係を解析するタスクです。以前TokyoNLPで発表した資料を見てください。やるとわかるのですが、品詞情報などでわかる構造はだいたい当たるようになる一方で、どうしても品詞だけだとわからない部分をちらほら間違えます。例えば、「値段の高いワイン」と「父の高いワイン」は「値段」も「父」も同じ名詞なのに構造が全く違う。&lt;br /&gt;ここで、選択選好という用語の登場です。選択選好というのは、単語には係り安い単語がある、という様な意味で、例えば「・・・の高い」といったら、・・・の部分には「値段」や「背」など高さを持つ単語がきやすくて、「父」はこないというような性質です。この、係り安さというのを、コーパス中での共起しやすさで表現しようというアイデアです。共起しやすさは、PMI（自己相互情報量、Point-wise Mutual Information）で測ります。これは、2つの確率変数の同じ確率が、偶然の共起（＝独立）に比べてどれくらい共起するかの指標です。単に共起頻度さえ測れれば計算できるのでよく使われます。これを高階Eisnerのlog-linearモデルの特徴にしてしまいます。&lt;br /&gt;内容はこれだけです。3単語の場合の測り方などのちょっと変化球もありますが、大きくアイデアが変わるわけではありません。&lt;br /&gt;PMIを測る方法、というよりは共起頻度を測る方法として大規模なGoogle V1コーパスを使う方法と、ググった時の頻度推定値を使う2つの方法を試しています。結果的に、PMIを使わない場合より高いスコアを出す一方で、最新の半教師あり学習より低いくらいの精度でした。また、データ数が多い方が精度は良く、V1コーパスよりググった結果を使ったほうが良いようです。面白いのはコーパスを変えてもあまり精度は変わらず、単純に使う単語数のみに精度が依存していました。&lt;br /&gt;&lt;br /&gt;さて、発表でも言ったとおり卒論のテーマにあってもおかしくないくらい簡単な方法です。ただ、一方で「単語出現のPMIを特徴に入れれば、選択選好を表現できて、精度をあげられる」という極めてシンプルで強力な主張で、適用範囲も広いし、他の研究への応用もしやすい。この論文の評価は割れると思います。手法の適用範囲の広さは重要ですが、昔からやろうとした人はいたけどデータが少なかったから効果がなかったが、最近は大規模になって〜系だとするとよくあるWeb大規模論文にしか見えてきません。データが大規模化しても省メモリで動くみたいな一捻りがあったらより良かったかなと思います。とりあえず日本語で試してみようかと思ったら、dependency parserのソースは前の職場においてきてしまった・・・&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;実は最初は別の論文を紹介しようと思っていました。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Language-independent compound splitting with morphological operations.&lt;/b&gt;&lt;br /&gt;Klaus Macherey, Andrew Dai, David Talbot, Ashok Popat, Franz Och.&lt;br /&gt;ACL2011. [&lt;a href="http://aclweb.org/anthology-new/P/P11/P11-1140.pdf"&gt;pdf&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;内容としては、複合語を分解する話です。ドイツ語などは複合語をくっつけて書くので、これを分解して機械翻訳の精度を上げようとしています。ただ、教師データがないので教師なしの設定で行います。やり方としては、分解の候補と語形変化候補をたくさん作って、最適パスを求めるという話です。と、書くと分かるとおり、それなんてコスト最小化法、あるいはSemi-Markovちゃうの、という感じです。単語分割問題に慣れ親しんだ我々日本人は、ここでガツンといいたいところです（ぉ&lt;br /&gt;ということで、動的計画法面白そう！と思ったらよくある話で飽きてしまいました。途中までスライド作ってたのに・・・&lt;br /&gt;&lt;br /&gt;しかし、2011年になって単語分割の重要性に気づくとは！　単語分割先進国の我々日本人はもっと貢献してもいいような気がしました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて、他の方の発表ですが、オモシロイと思ったのは @nokuno さんの単語アライメントを識別学習する話。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Unsupervised Word Alignment with Arbitrary Features.&lt;/b&gt;&lt;br /&gt;Chris Dyer, Jonathan Clark, Alon Lavie, Noah A. Smith.&lt;br /&gt;ACL2011. [&lt;a href="http://aclweb.org/anthology-new/P/P11/P11-1042.pdf"&gt;pdf&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;たぶんご本人がブログで解説されると思うので、他の視点で。&lt;br /&gt;twitterでも書きましたが、このモデルはlinear-chain CRFの変化形として捉えることができる気がしました。普通のCRFでは、第1項が単なる特徴ベクトルになりますが、ここではaの分布の上での期待値になっています。しかし、これはアライメントaと単語tの2つ組をタグ付けるタスクにおいて、aだけ周辺化してけしていると捉える事ができます。つまり、tに対するタグだけ存在する部分的アノテーション状態です。ということで、坪井さんの部分的アノテーション論文。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;日本語単語分割の分野適応のための部分的アノテーションを用いた条件付き確率場の学習.&lt;/b&gt;&lt;br /&gt;坪井 祐太, 森 信介, 鹿島 久嗣, 小田 裕樹, 松本 裕治.&lt;br /&gt;情報処理学会論文誌 Vol. 50, No. 6, 2009. [&lt;a href="http://ci.nii.ac.jp/naid/110007970452/"&gt;link&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;部分的アノテーションとは一部だけタグがふられている状態です。ラベルの振られていない部分は、全ての候補集合に対して特徴ベクトルを足しこみます。元のアライメントの問題も全てのアライメント候補を足し合わせる（周辺化する）部分が同じで、実際アライメント論文の対数尤度関数と坪井論文の(3)式、あるいはアライメント論文の(1)式と坪井論文の(5)式が同じ形をしています。&lt;br /&gt;完全に両者が同じ事をしているというわけではもちろんないですが、意外な類似性が見えて私は面白かったです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今日は途中お腹空き過ぎで、ちゃんと理解できたのが少なかったです。@niamさんは、教師なし品詞タグ付けを、パラレルコーパスを使って別言語から伝搬させる話。@shuyoさんはLDAにインタラクティブに制約を加える話。教師なし学習の結果が人間可読でない問題は昔から気になっていたので、どちらともこういうモチベーションは好き（内容は理解半分・・・）。@sleepy_yoshiさんはランキング学習を転移学習させる話。最初のランキング学習のチュートリアルがわかりやすかった。@suzuvie_reさんはcross-documentの共参照解析を、pair-wiseでなくてまとめてからやるようなモデルでやるはなし。雰囲気はわかったが、モンテカルロ法の教養がなくて基本的なところから理解できなかった。難しす。@bontyさんはスペル訂正を、コスト最小パスの問題と、top-kのリランキングで解く話。グラフと思ったら、DAGだったｗ 上の複合語の話と通じるものがあります。@tsubosakaさんは識別モデルによる言語モデルを大規模化する話。普通にMEするとZの計算で頓挫するけど、上手いことサボれる。こういう話を、昔@whymくんがやろうとしていたような気がする。&lt;br /&gt;&lt;br /&gt;今日得た素晴らしい知識は、IJCAIを「イジカイ」と読むのは日本人だけ、SIGIRを外人は「シガー」と読むということでした。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-8870064035154205873?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/8870064035154205873/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/09/acl2011.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8870064035154205873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8870064035154205873'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/09/acl2011.html' title='ACL2011読み会で発表してきました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-3805783265918757883</id><published>2011-09-02T16:55:00.000+09:00</published><updated>2011-09-02T16:55:37.685+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>動的計画法は再帰で表せ</title><content type='html'>動的計画法の説明は常に再帰関数で書き表すことにしています．いやゆるメモ化再帰です．参照透過な関数は，同じ引数に対して同じ値を返すので，保存しておけばいいという感覚です．計算量の見積もりも簡単で，引数の異なり数に関数中のループの上限をかければおしまいです．特に再帰で書くことに慣れていれば自明に書けますし，テーブルを使ったDPと違って，ループの順番を意識する必要がありません．このテクニックは学部時代に@ohkuraに教えてもらいました．関数型言語に触れた今でこそ当たり前に見えますが，当時は目から鱗だったのを覚えています．&lt;br /&gt;メモ化再帰と不動点に関する&lt;a href="http://www.kmonos.net/wlog/52.php#_0308050827"&gt;@kinabaさんの日記&lt;/a&gt;や，プログラミングコンテスト的には&lt;a href="http://www.itmedia.co.jp/enterprise/articles/1003/06/news002.html"&gt;@chokudaiさんの記事&lt;/a&gt;が参考になります．&lt;br /&gt;&lt;br /&gt;今更ですが，ちょっと例で説明します．フィボナッチ数を計算する関数fib(x)は再帰式で，fib(x) = fib(x - 1) + fib(x - 2)とかけます．このままプログラムにかくと，&lt;br /&gt;&lt;pre class="python:nogutter" name="code"&gt;def fib(x):&lt;br /&gt;if x == 0 or x == 1:&lt;br /&gt;return 1&lt;br /&gt;else&lt;br /&gt;return fib(x - 1) + fib(x - 2)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;これで参照透過な関数はかけました．後はメモ化するだけ．&lt;br /&gt;&lt;pre class="python:nogutter" name="code"&gt;def fib(x):&lt;br /&gt;if x in cache:&lt;br /&gt;return cache[x]&lt;br /&gt;elif x == 0 or x == 1:&lt;br /&gt;return 1&lt;br /&gt;else:&lt;br /&gt;v = fib(x - 1) + fib(x - 2)&lt;br /&gt;cache[x] = v&lt;br /&gt;return v&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;これだけです．基本，再帰が書ければそこでおしまい．パフォーマンスがシビアにならない限り，基本的に全部これでプログラム書いています．&lt;br /&gt;&lt;br /&gt;もっとNLPよりな例を出します．たとえば，linear-chain CRFのViterbiパスのスコアを求めてみましょう．&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.apis.google.com/chart?cht=tx&amp;chl=v(t%2C%20x)%20%3D%20%5Cmax_y%20(v(t-1%2C%20y)%20%2B%20s(x%2C%20y))" /&gt;&lt;br /&gt;&lt;br /&gt;s(x, y)は素性ベクトルと重みベクトルの内積です．やはり再帰でかけますので，同じようにメモ化するだけです．メモ化したあとに，じっとにらめっこすると，いわゆるDPテーブルを使った動的計画法に変換できます．ただ，DPテーブルを使う場合は，計算の順番を考えないといけない点で面倒です．つまり，v[t][x]の計算にはv[t-1][・]が全部終わっている必要があります．関数呼び出しコストがなくなるので，実用上は速くなります．ただし，CRFやHMMくらいならいいですが，CKYの計算順序くらいになると直感ではわからなりません．再帰で書けば，計算されてなかったら計算する，計算済みならキャッシュを返す．それだけです．まぁ，依存関係を図示すれば多くの場合すぐわかりますが．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://figment.cse.usf.edu/~sfefilat/data/papers/WeCT5.1.pdf"&gt;On Efficient Viterbi Decoding for Hidden semi-Markov Models&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;Ritendra Datta, Jianying Hu, Bonnie Ray, ICPR 2008.&lt;br /&gt;&lt;br /&gt;Semi-MarkovのViterbiがDPテーブルを2つ使うと高速になるよ，という論文を以前先輩に紹介されました．最初この論文は式が全然追えなくて，なんて複雑怪奇な計算をしているんだと思ったのですが，途中にある再帰式を眺めてたら気づきました．&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.apis.google.com/chart?cht=tx&amp;chl=%5Cdelta_t%28n%29%20%3D%20%5Cmax_%7B%5Ctau_n%7D%20%5Cleft%28%5Cmax_j%20%5Cdelta_%7Bt%20-%20%5Ctau_n%7D%28j%29%20a_%7Bj%2C%20n%7D%5Cright%29%20p_n%28%5Ctau_n%29%20B%28t%2C%20n%2C%20%5Ctau_n%29%20%0A" /&gt;&lt;br /&gt;&lt;br /&gt;Bの部分は一部省略してます．これの計算量はT * N引数で，T回ループとN回ループがあるのでO(N&lt;sup&gt;2&lt;/sup&gt;T&lt;sup&gt;2&lt;/sup&gt;)といってます．これをちょっと変形します．&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.apis.google.com/chart?cht=tx&amp;chl=%5Ceta_%7Bt%7D%28n%29%20%3D%20%5Cmax_j%20%5Cdelta_%7Bt%7D%28j%29%20a_%7Bj%2C%20n%7D%20%5C%5C%0A%5Cdelta_t%28n%29%20%3D%20%5Cmax_%7B%5Ctau_n%7D%20%5Ceta_%7Bt%20-%20%5Ctau_n%7D%28n%29%20p_n%28%5Ctau_n%29%20B%28t%2Cn%2C%5Ctau_n%29" /&gt;&lt;br /&gt;&lt;br /&gt;単に内側のmaxを外だしにしました．相互再帰になりました．見えましたか？　どちらの関数もT * N引数で，ηはN回，δはT回のループです．これを素直にメモ化すれば，計算量はO(NT(N + T))です．恐ろしく簡単になりました．こう書けばいいのに・・・．&lt;br /&gt;&lt;br /&gt;思うに，この程度まで複雑になってしまうとDPテーブルを使って考えるのは難しいです．まず，再帰で表す．そしてメモ化．速くしたければDPテーブル化．再帰で表すセンスは関数型言語で磨きましょう．リストや木やDAGを見ると再帰で表したくてうずうずしたくなりますよ．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-3805783265918757883?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/3805783265918757883/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/05/blog-post_26.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3805783265918757883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3805783265918757883'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/05/blog-post_26.html' title='動的計画法は再帰で表せ'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-660307358139769203</id><published>2011-07-17T09:13:00.000+09:00</published><updated>2011-07-17T09:13:12.310+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><title type='text'>ICML2011読み会に行ってきました</title><content type='html'>昨日は@nokunoさん主催のICML2011読み会に参加しました。ボクは場所貸ししただけで、発表してません（汗　本当は超簡単なsemi-supervised naive bayseを実装して発表しようかと思ったんですが、発表者いっぱいいるし、まぁいいかなと。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;さて、みなさん発表上手なので話半分に分かった気になりました。一番面白かったのは松島さんが紹介した下の論文。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.icml-2011.org/papers/231_icmlpaper.pdf"&gt;Parallel Coordinate Descent for L1-Regularized Loss Minimization&lt;/a&gt;&lt;br /&gt;Joseph Bradley, Aapo Kyrola, Daniel Bickson, Carlos Guestrin&lt;br /&gt;&lt;br /&gt;coordinate descentというのは、特徴空間の中で適当な次元の断面を考えて、その平面上で目的関数を最小化し（特に、解析的に最小点が求まることもある）、これを繰り返せば最終的にもとの特徴空間上での最小点がもとまるというもの。で、この平面の選択を分散させて、更新分を集約するとほぼリニアに速度がスケール。しかもすごいのは、並列性の理論的な限界も示せて、実験でそれも検証というもの。&lt;br /&gt;これを聞いて思ったのは、検索などの文脈で出るキーワード分割とドキュメント分割の話。(parallel) SGDみたいなのはデータを分散させるのでドキュメント分割的で、この方法は特徴量で分散させるのでキーワード分割的だなぁということ。あと、平面で切ったあとの最小化はもとの関数の勾配を使うので、振る舞いとしてはバッチ的。なので目的関数はギュンギュン下がります。&lt;br /&gt;&lt;br /&gt;あとは、@tsubosakaさんの説明したトピックを差分で表す話も面白かった。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.icml-2011.org/papers/534_icmlpaper.pdf"&gt;Sparse Additive Generative Models of Text&lt;/a&gt;&lt;br /&gt;Jacob Eisenstein, Amr Ahmed, Eric Xing&lt;br /&gt;&lt;br /&gt;今まではトピックを多項分布（のパラメタ）みたいに表してたけど、そうではなくて全体の分布からの差分だと考えるという話。これは、例えばストップワードみたいにトピックに依存しない単語の出現確率まで推定するのは無駄なのと、そういう単語の出現確率がトピックごとに異なるみたいに推定されるのはちょっと気持ち悪い。そこで、全体の平均的な分布を考えて、トピックごとの差分をそこに足す。そして、この差分ベクトルがスパースになるような事前確率を入れるという話。差分が表現出来れば、他のトピックと比べてどの単語が多くてどの単語が少ない、というトピックごとの特徴も自然に説明できそうでよさそう。残りのベイズベイズした話は、ふーん、と思いながら聞き流してましたｗ&lt;br /&gt;&lt;br /&gt;@niamさんの説明したSVDでディテールが潰れるところを、差分行列として取り除く話も、似たような雰囲気を感じました。全体的な平均から逸脱する部分を、疎な差分として表現して、その２つで表すという点で似ている気がします。&lt;br /&gt;&lt;br /&gt;@nokunoさんのアンカーグラフと、@n_shuyoさんのInfinite SVMは、両方共データがどういうところに分布しているのかを考慮して学習したほうがいいよ、というような話に聞こえました。多様体とか勉強しようかな・・・。@y_benjoさんのpage rankを保存しながらグラフを圧縮する話は、なんでみんなやってなかったんだろうという気がしました。@suzuvie_reさんのベイジアーンな発表は、途中から全然追えてませんでした。キビシイ。&lt;br /&gt;&lt;br /&gt;ベイズな話は、一度何か実装してみないと話についていけないなぁと思いました。あと、気になったのは人工データで実験しているのをたくさん見るんですが、実問題の設定からかけ離れていて意味あるのかなと思ったのが幾つかありました。どうやって手法の優位性を言うかは難しいですね。&lt;br /&gt;みなさん５時間近くお疲れさまでした。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-660307358139769203?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/660307358139769203/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/07/icml2011.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/660307358139769203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/660307358139769203'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/07/icml2011.html' title='ICML2011読み会に行ってきました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-4350425897248677498</id><published>2011-07-15T23:52:00.006+09:00</published><updated>2011-07-15T23:58:33.283+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='写真'/><title type='text'>超広角を買いました</title><content type='html'>忘れてましたが、ここは写真のブログでしたｗ　2月前ほど、GWにバシバシと予定を入れてしまったので、レンズを買うことにしました。買ったのは、前から欲しかったシグマの超広角、8-16mmです。&lt;br /&gt;&lt;br /&gt;&lt;table  border="0" cellpadding="5"&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B003G28AZG/unnonouno-22/" target="_top"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41tG0O6reaL._SL160_.jpg" border="0" alt="シグマ 8-16mm F4.5-5.6 DC HSM ニコン用 8-16mm F4.5-5.6 DC HSM NA" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;font size="-1"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B003G28AZG/unnonouno-22/" target="_top"&gt;シグマ 8-16mm F4.5-5.6 DC HSM ニコン用 8-16mm F4.5-5.6 DC HSM NA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;シグマ  2010-05-28&lt;br /&gt;売り上げランキング : 17670&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B003G28AZG/unnonouno-22/" target="_top"&gt;Amazonで詳しく見る&lt;/a&gt;&lt;/font&gt; &lt;font size="-2"&gt;by &lt;a href="http://www.goodpic.com/mt/aws/index.html" &gt;G-Tools&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;8mmって！　前玉なんてものすごく飛び出てるし、フィルター付けられないし、重いしでかいし。でも、たまたまアウトレット特価で４万円台という破格で売られていたので買いました。こんな焦点距離なのに、ものすごくシャープに写ってびっくり。純正の魚眼はパープルフリンジがこれでもかというくらいでるのに、全然そんなことない。空を撮ると、流れるような雲が異様な存在感を帯びて写ります。これは買ってよかった。ちなみに、上のリンクはペンタ用がamazonから消えてたのでニコンです。悲しい・・・&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm7.static.flickr.com/6141/5939759187_e54886323e_z.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="640" width="425" src="http://farm7.static.flickr.com/6141/5939759187_e54886323e_z.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-4350425897248677498?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/4350425897248677498/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/07/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/4350425897248677498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/4350425897248677498'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/07/blog-post.html' title='超広角を買いました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm7.static.flickr.com/6141/5939759187_e54886323e_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5578401879129439681</id><published>2011-06-12T23:04:00.011+09:00</published><updated>2011-06-12T23:19:32.174+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='プログラミング'/><title type='text'>動的型情報で仮想関数呼び出しを速くできるか</title><content type='html'>C++は抽象化と高いパフォーマンスを両立させるにはtemplateを使うのがセオリーでした。そのため、標準ライブラリはtemplateを使っています。一方のJavaは、積極的に仮想関数を使っています。しかし、Javaは動的型情報を使った実行時インライン展開ができるため、C++と違って疎結合のまま高いパフォーマンスを出すことが出来ました。しかし、よく考えれば、C++でも実装クラスが限定されるなら、Javaと同様なことをハードコードすることでC++の仮想関数を高速ができるのではと思って試してみました。&lt;br /&gt;&lt;br /&gt;結論から言うと、一応速くなりました。でも、インライン展開を抑制しなければいけないほどの効果が出るのは、かなり限定的のようです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;さて、順を追って説明します。&lt;br /&gt;&lt;br /&gt;まず、C++では仮想関数を使うと遅くなるというはなし。C++で仮想関数を使うと、仮想関数テーブルが作られます。そして、関数呼び出しが起こると仮想関数テーブルを参照して、そこに書かれた関数を呼ぶことになります。仮想関数テーブルというのは、要は関数ポインタです。そしてこれが遅いため敬遠されます。&lt;br /&gt;何故遅いのか。これは、呼び出す関数が実行時までわからないため、コンパイル時にインライン展開できないというのが問題です。例えばvectorのoperator[]や、greaterなどのように、実質的には1命令ですむような関数を仮想関数にすると、本来数クロックで終わる処理に、レジスタの退避とジャンプ命令が付与されるため、劇的にパフォーマンスが低下する可能性があります。&lt;br /&gt;&lt;br /&gt;例えば以下のようなプログラムを書いてみます。&lt;br /&gt;&lt;br /&gt;&lt;pre class="C++" name="code"&gt;class Parent {&lt;br /&gt; public:&lt;br /&gt;  virtual ~Parent() {}&lt;br /&gt;  virtual void fun() = 0;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;class Child : public Parent {&lt;br /&gt; public:&lt;br /&gt;  void fun() {}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;  Parent* c = new Child();&lt;br /&gt;  for (int i = 0; i &amp;lt; 1000000000; ++i)&lt;br /&gt;    c-&amp;gt;fun();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;この実行時間は1.7sec程度でした。ここで、c-&amp;gt;fun()をdynamic_cast&amp;lt;child*&amp;gt;(c)-&amp;gt;Child::fun()にすると実行時間が0.0secになりました。呼び出される関数が特定されたためインライン展開されて、結果的にループが消えたようです。これは、-Sでアセンブリを出力させれば、c-&amp;gt;fun()ではあった1000000000回のループが消えることで確認できます。ちなみに、Parent* c = ... をChild* c = ...に変えても実行時間は変わりません。cがChildの子クラスである可能性を否定出来ないからだと思います。&lt;br /&gt;&lt;br /&gt;さて、C++はこうした問題を回避しながら処理の抽象化を行うために、templateを使って対処しました。有名な例として、CのqsortよりもC++のsortの方が速いという話があります。これは、Cのqsortは比較関数を関数ポインタで渡しますがC++のstd::sortは関数オブジェクトをtemplateで渡します。関数ポインタですと、インライン展開できませんが、templateで関数オブジェクトを渡せばインライン展開されるので高速になるという寸法です。&lt;br /&gt;ここまでは、C++をやっていれば必ず聞く話です。&lt;br /&gt;&lt;br /&gt;さて、そうしたわけでパフォーマンスを気にしなければならないシーンで、templateを使うハメになるのですが、templateにするためにはソースを全部ヘッダに書いてコンパイルが遅くなったり、極端に複雑な依存関係に悩むはめになります。一方のJavaは、そもそもtemplateがないのですが、実はそもそも仮想関数がそんなに遅くならない仕組みが入っています。&lt;br /&gt;例えば、Javaで以下のようなソースを書きます。&lt;br /&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;interface Parent {&lt;br /&gt;  public void fun();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Child implements Parent {&lt;br /&gt;  public void fun() {}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class InlineTest {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;    Parent c = new Child();&lt;br /&gt;    for (int i = 0; i &amp;lt; 1000000000; ++i)&lt;br /&gt;      c.fun();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;このプログラムは非常に高速に実行されて、例えば自分の環境では 0.0ms でした。JavaのJIT最適化コンパイラは、ループの間でcが書き換わらないことを検知したら、下のようなプログラムに（実際はバイトコードレベルですが）に書き換えて実行するということのようです。  &lt;br /&gt;&lt;pre class="C++" name="code"&gt;if (c instanceof Child) {&lt;br /&gt;  Child c_ = (Child)c;&lt;br /&gt;  for (int i = 0; i &amp;lt; 1000000000; ++i) {&lt;br /&gt;    c_.fun();&lt;br /&gt;  }&lt;br /&gt;} else {&lt;br /&gt;  for (int i = 0; i &amp;lt; 1000000000; ++i) {&lt;br /&gt;    c.fun();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;c_.fun()がさらに実行時最適化によってインライン展開されて、最終的に大量の関数コールが消える、という寸法です。  さて、そういうわけで仮想関数に関してJavaの方が優れているように感じられます。だからといって、C++でtemplate地獄に陥りたくない・・・。この問題はC++プログラマーを非常に悩ませます。そもそもC++のように面倒なことこの上ない言語を使っているのは、ギリギリのCPU性能を引き出したいからなのに、仮想関数を使ったとたんJavaよりも遅くなるとか・・・。  そこで考えます。実装クラスがある程度事前に分かっていたら、手動で上記のようなif文を挿入すればいいのではないか、と。ようやく本題です。  C++で以下のようなプログラムを書いてみます。  &lt;br /&gt;&lt;pre class="C++" name="code"&gt;if (typeid(*c) == typeid(Child))&lt;br /&gt;    for (int i = 0; i &amp;lt; 1000000000; ++i)&lt;br /&gt;      dynamic_cast&amp;lt;child*&amp;gt;(c)-&amp;gt;Child::fun();&lt;br /&gt;  else&lt;br /&gt;    for (int i = 0; i &amp;lt; 1000000000; ++i)&lt;br /&gt;      c-&amp;gt;fun();&lt;br /&gt;&lt;/pre&gt;これは見事に0.0secでした。インライン展開されたのがわかります。ただし、上記のコードは若干マクロにしにくいので、以下のようにしました。  &lt;br /&gt;&lt;pre class="C++" name="code"&gt;#define CALL(T, c, f, ...)                          \&lt;br /&gt;  (typeid(*c) == typeid(T) ?                        \&lt;br /&gt;   dynamic_cast&amp;lt;t*&amp;gt;(c)-&amp;gt;T::f(__VA_ARGS__)           \&lt;br /&gt;   : c-&amp;gt;f(__VA_ARGS__))&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;  for (int i = 0; i &amp;lt; 1000000000; ++i)&lt;br /&gt;    CALL(Child, c, fun);&lt;br /&gt;&lt;/pre&gt;これを実行すると、0.6secでした。実行時間がもとのおよそ1/3になりました。先程のようなパフォーマンスにならないのは、もちろん分岐命令が入るからです。簡単なマクロを書くことで、事前にある程度実行型が分かっているなら効率を上げることができることがわかります。  ところで、指定した型以外のパフォーマンスはどうでしょう。別名の全く同じクラスを作ってみます。  &lt;br /&gt;&lt;pre class="C++" name="code"&gt;class Child2 : public Parent {&lt;br /&gt; public:&lt;br /&gt;  void fun() {}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;  Parent* c = new Child();&lt;br /&gt;  for (int i = 0; i &amp;lt; 1000000000; ++i)&lt;br /&gt;    CALL(Child, c, fun);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;これが非常に遅いです。5秒以上かかってしまいました。もとの時間の3倍です。何故でしょうか。 この謎を解くためには、typeinfoを覗かないといけません。  typeinfoファイルを覗くと、type_info::operator == で__buildin_strcmpという関数を使って型名の比較を行っているようです。これは残念すぎる。しかし、どうやら__GXX_MERGED_TYPEINFO_NAMESが0でなければ、単なる==演算しかしないようなので、gccに-D__GXX_MERGED_TYPEINFO_NAMES=1を指定して実行してみましょう。すると、実行時間が2.0sec程度になります。元のc-&amp;gt;fun()のみに比べて1割増程度で抑えられました。これでようやく満足です。&lt;br /&gt;&lt;br /&gt;ところで、実際のところここまで最適化する必要が有るのでしょうか。今回、意図的に差が出やすいように関数の中身を空にしました。実際は、数回のロード命令が挟まるだけで、インライン展開の恩恵は相対的に消えていきます。実際はサイズをいろいろ変えて、アセンブリコードを確認しながら試しましたが、載せるのがしんどくなったので割愛しますｗ　結果として、分岐やロードを数個挟むのであれば、普通に仮想関数にしてしまってもそこまで極端な性能差はでない、ということです。それから、上記の__GXX_MERGED_TYPEINFO_NAMESの問題もあるため、簡単にはパフォーマンスが上がってくれないということのようです。C++、ホントに難しい・・・。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5578401879129439681?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5578401879129439681/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/06/blog-post_12.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5578401879129439681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5578401879129439681'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/06/blog-post_12.html' title='動的型情報で仮想関数呼び出しを速くできるか'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-6694861736234550439</id><published>2011-04-26T08:58:00.002+09:00</published><updated>2011-04-26T09:28:02.380+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>CRFのヘシアン</title><content type='html'>&lt;a href="http://twitter.com/#%21/yuutat/status/59379911097454592"&gt;坪井さんの論文がAAAIに通りました。&lt;/a&gt;おめでとうございます。AAAI記念ということで、宣伝その２。今回はCRFのヘシアンを具体的に計算してみます。&lt;br /&gt;&lt;br /&gt;入力文x、ラベル系列y、重みベクトルwに対して、CRFの対数尤度関数は&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=%5Clog+P%28y%7Cx%29=f%5E%5Ctop+w-%5Clog+Z" /&gt;&lt;br /&gt;&lt;br /&gt;です。fは特徴ベクトルで、普通f(x, y)と書きますが省略します。Zは分配関数です。正則化項を無視すれば、学習データに対するこの値の総和、&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=%5Csum_%7B%28x,y%29%5Cin+D%7D%5C%7Bf%5E%5Ctop+w-%5Clog+Z%5C%7D" /&gt;&lt;br /&gt;&lt;br /&gt;が目的関数でした。この勾配はきれいな形をしていて、&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=%5Csum_%7B%28x,y%29%5Cin+D%7Df-E[f]" /&gt;&lt;br /&gt;&lt;br /&gt;という形でかけます。NLP屋さん的にはここでおしまいですが、実はもう１回微分した形、つまりヘシアンもきれいな形で求まります。では頑張って微分しましょうというのが今回の主旨。&lt;br /&gt;&lt;br /&gt;まず、第１項のΣ&lt;sub&gt;y&lt;/sub&gt;fの項はwで微分すると消えます。考えないといけないのは第２項のE[f]の部分だけです。ベクトルの微分なのでちょっとめんどくさいです。もとの式に戻しましょう。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=E[f]=%5Csum_y+P%28f%29f=%5Csum_y%5Cfrac1Z%5Cexp%28f%5E%5Ctop+w%29f" /&gt;&lt;br /&gt;&lt;br /&gt;ではwで微分しましょう。まずは積の微分公式です。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=%5Cnab+E[f]=%5Csum_y%5Cfrac1Zf%5Cleft%28%5Cnab%5Cexp%28f%5E%5Ctop+w%29%5Cright%29%5E%5Ctop+%2b%5Csum_y%5Cexp%28f%5E%5Ctop+w%29f%5Cleft%28%5Cnab%5Cfrac+1Z%5Cright%29%5E%5Ctop" /&gt;&lt;br /&gt;&lt;br /&gt;第１項は簡単ですね。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=%5Csum_y%5Cfrac1Zf%5Cleft%28%5Cexp%28f%5E%5Ctop+w%29f%5Cright%29%5E%5Ctop=%5Csum_yP%28f%29ff%5E%5Ctop=E[ff%5E%5Ctop]" /&gt;&lt;br /&gt;&lt;br /&gt;第２項は1/Zの微分ですが、これも勾配の時と同じように落ち着いて計算すれば綺麗に消えていきます。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=%5Csum_y%5Cexp%28f%5E%5Ctop+w%29f%5Cleft%28-%5Cfrac1%7BZ%5E2%7D%5Csum_%7By%27%7D%5Cexp%28f%27%5E%5Ctop+w%29f%27%5Cright%29%5E%5Ctop%5C%5C=-%5Cleft%28%5Csum_y%5Cfrac1Z%5Cexp%28f%5E%5Ctop+w%29%5Cright%29%5Cleft%28%5Csum_y%5Cfrac1Z%5Cexp%28f%5E%5Ctop+w%29%5Cright%29%5E%5Ctop=-E[f]E[f]%5E%5Ctop" /&gt;&lt;br /&gt;&lt;br /&gt;結果的に、全体では&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=E[ff%5E%5Ctop]-E[f]E[f]%5E%5Ctop" /&gt;&lt;br /&gt;&lt;br /&gt;になりました。なんともシンプル。ところで、勾配を求める時もものすごくキレイに期待値が出てきますよね。何回か手を動かしていると、その心がなんとなく分かってきます。イメージで言うと、expの微分がexpである（自分自身である）ということ、そしてexpの中のfwが微分されて、fが外に出てくるというのが結構ポイントのように思います。前者の特徴がP(y|x)を生み出し、後者がfを生み出し、全体でEを生み出している、そういう風に感じられます。&lt;br /&gt;&lt;br /&gt;さて、この式から具体的な再帰式（DPの式）を導くことが出来るでしょうか。実はここまでの式変形にCRFのCRFたる特徴は使っていません。使っているのは対数線形モデルであるという特徴だけです。したがって、MEもsemi-CRFもparsingの対数線形モデルも同じ式で表せます。CRFの特徴、すなわち特徴ベクトルfがグラフィカルモデル上でのクリークに対する特徴関数の和で表せるという性質を使うのはここからです。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=f=%5Csum_if_i" /&gt;&lt;br /&gt;&lt;br /&gt;だとします。iはクリークにつけられたインデックスです。すると、期待値の線形性から&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=E[f]=%5Csum_iE[f_i]=%5Csum_iP%28f_i%29f_i" /&gt;&lt;br /&gt;&lt;br /&gt;に分解できます。P(f&lt;sub&gt;i&lt;/sub&gt;)は各クリークが選ばれる周辺確率です。これは一般のCRFでは必ずしも効率的に計算できませんが、例えば直鎖CRF（linear-chain CRF)の場合は前向きスコアと後ろ向きスコアの積で簡単に表せることが知られています。すなわち、&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=P%28f_i%29=%5Cfrac1Z%5Calpha%28i%29%5Cexp%28f_i%5E%5Ctop+w%29%5Cbeta%28i%29" /&gt;&lt;br /&gt;&lt;br /&gt;です。細かいノーテーションは省略します。雰囲気で察してください（ぉ　αとβの値は動的計画法を使えば多項式時間で計算できますから、予め計算してあげれば上記のE[f]も多項式時間で計算できる、という寸法でした。lnear-chain CRFだと効率的に勾配を計算できるのは、このあたりが絡んでいます。先の&lt;a href="http://d.hatena.ne.jp/sleepy_yoshi/20110328/p1"&gt;@sleepy_yoshiさんの日記&lt;/a&gt;で省略されていたのがこの部分です。もちろん、前向き後ろ向きを内側外側にすれば構文解析ができます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;同じことを先のヘシアンに対しても適応できないか考えてみます。ところが、E[ff&lt;sup&gt;T&lt;/sup&gt;]を分解しようとしたところで詰まってしまいます。実は私は先ほど求めた式から動的計画法の式を導き出す方法をまだ編み出していません。しかし再帰式自体はもとまっていて、それが最初に紹介した坪井さんの言語処理学会の論文、及びAAAIの論文でした。個人的には、勾配の時と同じように上の式から直接きれいな形で再帰式を導き出せると思っています。実は別の導出もあるんですが、それも含めて再帰式の導出はまた今度。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-6694861736234550439?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/6694861736234550439/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/04/crf_26.html#comment-form' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/6694861736234550439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/6694861736234550439'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/04/crf_26.html' title='CRFのヘシアン'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-2768131159461326901</id><published>2011-04-12T21:51:00.004+09:00</published><updated>2011-04-12T22:43:08.284+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>Newton-CG法とは</title><content type='html'>先日、@sleepy_yoshiさんが&lt;a href="http://d.hatena.ne.jp/sleepy_yoshi/20110329/p1"&gt;CRFの目的関数の導関数を求める記事&lt;/a&gt;を書いていました。ここに便乗して、@yuutatさんたちとやっていたNewton-CG法について解説を書きます。・・・、と思ってたのですが引っ越してから未だにネットにつながらなくてなかなか更新できませんでした。今、マックで書いてますｗ&lt;br /&gt;&lt;br /&gt;まず、Newton法のおさらいから。Newton法は、目的関数を２次関数で近似して、その最小値（放物線の頂点）に更新する方法です。２次関数による近似は現在のパラメータx&lt;sub&gt;0&lt;/sub&gt;の周りでテーラー展開すればよいです。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=f(x)\simeq+f(x_0)%2bf'(x_0)(x-x_0)%2b\frac12f''(x_0)(x-x_0)^2" /&gt;&lt;br /&gt;&lt;br /&gt;これが最小値を取るのはxで微分した値が0になる時で、それは&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=x_{\text{new}}=x_0-f'(x_0)/f''(x_0)" /&gt;&lt;br /&gt;&lt;br /&gt;に更新すればよいことがわかります。xがベクトルの場合も同様で、この場合、１階微分がベクトル（勾配）g、２階微分が行列（ヘシアン）Hになることに気をつけます。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=x_{\text{new}}=x_0-H^{-1}g" /&gt;&lt;br /&gt;&lt;br /&gt;さて、CRFの目的関数に関してこれを適用することを考えます。勾配は@sleepy_yoshiさんの日記のとおり計算できます。問題はヘシアンの逆行列です。この計算には２つの難しさがあります。ひとつは、xの次元が大きすぎるため、ヘシアン自体を陽に計算できません。もうひとつは、その逆行列は尚更計算できません。&lt;br /&gt;&lt;br /&gt;この問題を解決するために、ヘシアンの逆行列を近似するのが擬ニュートン法でした。よく知られたL-BFGSは、反復の直近の勾配を使ってこれを近似します。しかし、実はもっと正確に計算できます。欲しいのはヘシアンでもヘシアンの逆行列でもなく、ヘシアンの逆行列を勾配に掛けた値です。つまり、欲しいのはベクトルです。ヘシアンもヘシアンの逆行列も陽に計算しないで、ヘシアンの逆行列と勾配との積を直接計算できないか、というアイデアが生まれます。実はこれが数値解析的に計算できます。すなわち、&lt;a href="http://ja.wikipedia.org/wiki/%E5%85%B1%E5%BD%B9%E5%8B%BE%E9%85%8D%E6%B3%95"&gt;共役勾配法（CG法）&lt;/a&gt;を利用してこれを計算してしまう方法、これがNewton-CG法です。&lt;br /&gt;&lt;br /&gt;ここでCG法を思い出してみましょう。CG法は連立一次方程式Ax=bを数値的に解く手法です。この解というのは、すなわちx=A&lt;sup&gt;-1&lt;/sup&gt;bを求めるということです。ところで先ほど求めたかったのは、H&lt;sup&gt;-1&lt;/sup&gt;gでした。すなわち、Hx=gという連立一次方程式をCG法でといてやれば、求めたかった更新式を計算できるという寸法です。ようやく道が開けてきました。CG法の更新式にAの逆行列は出てきません。これでヘシアンの逆行列を計算する必要がなくなりました。代わりにAとベクトルとの積が出てきます。この、ヘシアン・ベクトル積（Hessian-vector product）を計算できるか否かがポイントに成ります。そして、CRFの目的関数に対するヘシアン・ベクトル積が、動的計画法によって効率的に計算できるよ、ということを示したのが&lt;a href="http://2boy.org/~yuta/publications/ncg-nlp2011.pdf"&gt;言語処理学会での@yuutatさんの論文&lt;/a&gt;なのでした。肝心のCRFのヘシアン・ベクトル積の計算方法ですが、これは導出が結構めんどくさい。言語処理学会の論文でもほとんど省略、発表では完全に省略（笑）しています。ところで、Newton-CG法自体は既存手法だったので、ひょっとすると機械学習やあるいは最適化の人にとってはよく知られた手法なのかもしれません。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;言語処理ではベクトルの次元が巨大になるのでヘシアンを陽に計算できないよね、だから大雑把な近似しかできないよね、だからL-BFGSを使うんだよ、というのが教科書的な説明でした（だったと思う）。ちょうど、機械学習アルゴリズムを実装しようと思ってこの辺りの最適化アルゴリズムを勉強していて、ほうほうだから近似するんだね、ひとつ賢くなったよ、と思ってたときにNewton-CG法を教えてもらいました。せっかくできないことを知った直後に、実はできるよと言われたものだから結構衝撃的だったのを覚えています。ヘシアンもヘシアンの逆行列も陽に求まらないけど、それらをすっ飛ばしてヘシアン・ベクトル積なら計算できる。この辺りは全系列を列挙はできないけど、周辺確率なら計算できる、分配関数なら計算できるというのに似ていて、DPスキーとしてはニヤリとしてしまいます。&lt;br /&gt;ところで時はオンライン学習大全盛の時代。L-BFGSに劇的勝利を果たしたあと、SGDの驚異的な学習の速さにあ然とするのでした。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-2768131159461326901?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/2768131159461326901/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/04/newton-cg.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2768131159461326901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2768131159461326901'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/04/newton-cg.html' title='Newton-CG法とは'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5371986666661600202</id><published>2011-04-02T13:55:00.001+09:00</published><updated>2011-04-04T10:34:35.257+09:00</updated><title type='text'>「私は人生の岐路に立ったとき、常に困難な方の道を選んできた」</title><content type='html'>twitter上で書いたとおり、３月末をもちまして日本アイ・ビー・エムを退社いたしまして、4月から株式会社Preferred Infrastructureの研究開発部門で働きます。ここに戻ってくることは無いだろうと思った本郷に、たった3年で戻ってくることになるとは思っても見ませんでした。&lt;br /&gt;&lt;br /&gt;内外いろんな人から、なんで転職するんだという質問をいただきます。別に前職に大きな不満があるわけでもなかったし（小さな不満はどこに行ってもあると思います）、ちょうど自分がやり始めた研究、開発が成果を上げ始めて、まさにこれからという微妙なタイミングでもありました。&lt;br /&gt;昨年末あたりから@hillbigさんに声をかけてもらって、悩んだ末での決断でした。これから研究開発を強化する、その過程を体験するというのは非常にチャレンジングで貴重な体験になるだろうと考えたのが主要な理由です。また、特に心に響いたのが、「変わらないこともリスクだよ」という言葉でした。自分の人生を考えたときに、どこかでチャレンジをするのなら若いウチの方がよかろうし、今のタイミングを逃したらもっと転職に対してハードルが上がるだろうということを思いました。今なら、例えば会社がうまくいかなくなったとしても、またやり直せるだろうということも考えました。いろいろな形でチャレンジをしている友人がたくさんいるのですが、彼らもやはりそうしたリスクを許容して、また失敗したとしてもそこからどんどん成長しているのを思ったりもしました。&lt;br /&gt;最後に自分を奮い立たせたのが、タイトルの岡本太郎の言葉です。これからは今まで以上にチャレンジングな環境で、いろんな意味で尖った人間に囲まれることになります。短いながら３年間大企業で培った経験を活かして、常に成長していくことを目指し、腐らずに頑張っていこうと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5371986666661600202?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5371986666661600202/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/03/blog-post.html#comment-form' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5371986666661600202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5371986666661600202'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/03/blog-post.html' title='「私は人生の岐路に立ったとき、常に困難な方の道を選んできた」'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-3100516785948034570</id><published>2011-03-14T18:08:00.002+09:00</published><updated>2011-03-14T20:00:52.327+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><title type='text'>L1正則化で重みが0につぶれる理由</title><content type='html'>L1正則化、つまり正則化項としてL1-normを使うとパラメタの大部分が0につぶれてモデルがコンパクトになるよという話をよく聞くと思います。初めて聞くと、何で？と思われるかと思います。先日の岡野原握手会でもこの話題がさらっとでて、@hillbigさんはよく微分した形でこれを説明しています（「押すなよ押すなよー」）。私は目的関数の形で理解した方がわかりやすいと思っているので、それを紹介。&lt;br /&gt;&lt;br /&gt;まず、正則化項の入っていない凸な目的関数を考えます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-RxmhiXho7dc/TX3JQ1cGgDI/AAAAAAAAAX8/8NMdfEE1IA8/s1600/obj.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 224px;" src="http://1.bp.blogspot.com/-RxmhiXho7dc/TX3JQ1cGgDI/AAAAAAAAAX8/8NMdfEE1IA8/s320/obj.png" alt="" id="BLOGGER_PHOTO_ID_5583840404069318706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;普通パラメタベクトルは多次元なので、多次元の山みたいな形になりますが、ここでは1次元だと思いましょう。この時点で最適値は（頂点の位置）は3です。これに正則化項を足します。L2だとこんな形をしています、というか0を中心とする放物線です。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-4L9QOk8Rlyg/TX3JZVyHXuI/AAAAAAAAAYE/IytehbUYJA4/s1600/l2.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 224px;" src="http://4.bp.blogspot.com/-4L9QOk8Rlyg/TX3JZVyHXuI/AAAAAAAAAYE/IytehbUYJA4/s320/l2.png" alt="" id="BLOGGER_PHOTO_ID_5583840550190538466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;足しましょう。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-gmnev2o7624/TX3Jh-HV-sI/AAAAAAAAAYM/UH6aPZdDAIo/s1600/objl2.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 224px;" src="http://4.bp.blogspot.com/-gmnev2o7624/TX3Jh-HV-sI/AAAAAAAAAYM/UH6aPZdDAIo/s320/objl2.png" alt="" id="BLOGGER_PHOTO_ID_5583840698455947970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;足すと0に向かってシフトすることがわかるでしょう。L2正則化の式は原点中心の山なので、元の山（頂点がどこだかわからない）に足すと、必ず頂点は0に近づきます。ここで大事なのは、頂点の”値”ではなくて”位置”です。求めたいのは最小値をとる引数です。このとききれいな山になるのですが、滑らかな曲線に滑らかな曲線を足したんだから、滑らかな曲線ができるに決まってます（目的関数が滑らかな場合）。目的関数の頂点の位置にかかわらず0に近づく、しかし0にはならないことは明白です。これが、L2でパラメタの値が小さくなる、しかし0につぶれない理由です。&lt;br /&gt;&lt;br /&gt;では、L1だったら？ L1は下のような形をしています。尖ってます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-m4ZkKKYs0ac/TX3Jos-xsSI/AAAAAAAAAYU/fUzIo6GtcPs/s1600/l1.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 224px;" src="http://3.bp.blogspot.com/-m4ZkKKYs0ac/TX3Jos-xsSI/AAAAAAAAAYU/fUzIo6GtcPs/s320/l1.png" alt="" id="BLOGGER_PHOTO_ID_5583840814115696930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;足したときの形というのは、0で折り曲がるのは（微分できない）確実ですが、元の目的関数の形に依存して以下の2種類が考えられます。ひとつは依然として0以外のところで最適値をとるケース。もう一方は0でぱきっと折れて、0が最適値になるケースです。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-d-kXi0IHJGw/TX3J4nrFqVI/AAAAAAAAAYk/a71HEDE_b6Y/s1600/objl1.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 224px;" src="http://3.bp.blogspot.com/-d-kXi0IHJGw/TX3J4nrFqVI/AAAAAAAAAYk/a71HEDE_b6Y/s320/objl1.png" alt="" id="BLOGGER_PHOTO_ID_5583841087568849234" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-7Mm0_p1CVz0/TX3JvwG6fYI/AAAAAAAAAYc/Ry8Qa7rEiBk/s1600/objl12.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 224px;" src="http://1.bp.blogspot.com/-7Mm0_p1CVz0/TX3JvwG6fYI/AAAAAAAAAYc/Ry8Qa7rEiBk/s320/objl12.png" alt="" id="BLOGGER_PHOTO_ID_5583840935214218626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;先ほど書いたとおり、本当の目的関数は多次元ですから、0になる次元とならない次元があります。この、0になる次元というのが、0につぶれる次元ということです。&lt;br /&gt;ではどういう次元が0につぶれるのでしょう。正則化項を足した後の関数を微分すれば関数の傾きがわかります。0の前後で傾きの正負が変われば0につぶれることがわかります。正則化項の傾きは0の前後でそれぞれ一定ですので、結局目的関数の0の周辺での傾き（微分）の大小によって決定されると理解できそうです。&lt;br /&gt;&lt;br /&gt;さて、この傾きが@hillbigさんのいうところの「0に向かって押す力」です。目的関数は自分の頂点（≠0）に向かってみんなで押していて、その力は&lt;span style="font-weight: bold;"&gt;頂点からの距離で変わり&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;ます&lt;/span&gt;。一方、正則化項は&lt;span style="font-weight: bold;"&gt;一定の力&lt;/span&gt;で0に向かって押しています。両者の大きさの大小は場所によって違うということです。正則化項の押す力のほうが0近辺で強ければ、目的関数の押す力は負けてしまいますので0の前後で正則化項の力に負けて最適点は0になります。すると、先ほどのぱきっと折れた後者のグラフ、0で最適値をとるグラフになるわけですね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-3100516785948034570?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/3100516785948034570/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/03/l10.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3100516785948034570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3100516785948034570'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/03/l10.html' title='L1正則化で重みが0につぶれる理由'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-RxmhiXho7dc/TX3JQ1cGgDI/AAAAAAAAAX8/8NMdfEE1IA8/s72-c/obj.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-819936650639365497</id><published>2011-03-13T19:59:00.003+09:00</published><updated>2011-03-13T23:11:39.028+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>言語処理学会年次大会2011に参加しました</title><content type='html'>先週は月曜から金曜まで、豊橋技術科学大学で開催されいていた言語処理学会年次大会に参加しました。会場がホテルから遠いとか、駅から遠いとか、豊橋技科大出身の友人が何にもないよとか言ってて不安でしたが、梅村先生はじめ、技科大のスタッフの尽力のおかげでこれといった不便はありませんでした。初日に暖房が効いてなくて死ぬかと思いましたが、次の日から改善されていました。あったとすれば、「たかり事件」くらいでしょうかｗ&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;私の発表は、若手の会での発表の続きで、表現統一のために既存文書の頻出表現を動的に取り出して入力支援に活かす話です。予測入力とおもってもいいと思います。主に若手の会で@nokunoさんに質問された、頻出Nグラムを使う方法とどう違うのか、という回答をしたつもりです。文書のクオリティーを上げるために表現統一を実現したいというモチベーションと、他手法と比べて文字列集合を探索する定式化をしていたり、単語単位を使っていないなどの比較がメインでした。手法の概要も話しましたが、かなり長いので、ほとんど省いてなんか大変なんだねというのが伝わる程度にしました。ざっくり書くと、KWICをコンパクトに表示すれば入力支援に使えると思い立ち、文字列集合に対するスコア関数を最大化させる形に定式化して、TRIEや接尾辞木などの文字列テクを駆使して実時間で実行出来るレベルにチューンしました。ちょっと笑いもとれたので良かったです。論文は&lt;a href="https://sites.google.com/site/unnonouno/publication"&gt;こちらのサイト&lt;/a&gt;においてあります。&lt;/div&gt;&lt;div&gt;Google、Microsoft、ジャストシステム、Appleと日本語入力をやっている企業から、ChaIME、Social IMEの開発者まで参加するオールスター的なセッションだったにも関わらず、不自然言語処理の裏セッションになってしまって聴衆を取られたっぽかったです。しかし、かなりクオリティーの高い議論ができた気がします。ちなみに、金曜に地震の影響で延泊したとき、さらに濃密なIME話を聞けて鼻血でそうでしたｗ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;坪井さん達との共著でNewton CG法をlinear chain CRFに適応した論文も発表しています。Newton CG法はHessianの逆行列（でか過ぎて計算できない）を使う代わりにCG法を使ってNewton方向を求める方法です。この際必要となるのは、Hessianと与えられたベクトルxとの積で、これがHessian vector積と言われる計算。問題は、CRFのように複雑な構造から計算される目的関数のHessian vector積を計算できるのかという点ですが、それを示したのがこの論文でした。入社してしばらくして、ねちねちL-BFGSをつくっていたときに教えてもらった思い出深い手法です。反復ごとの収束がものすごく速くなったのを覚えています。ちょうどSGDが大流行しているときで、出すタイミングを見失っていましたｗ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;発表以外では、若手の会、関根会、懇親会、岡野原握手会などの各種イベントに参加して、知り合いが増えました。私は学生時代、研究室の傾向でしょうか、あまり学会に参加しなかったのですが、いろんな知り合いを作るとアドバイスを貰えたり、相談できたり、なによりモチベーションの増加につながります。業界を俯瞰するにも役立ちます。最近は勉強会などもありますし、特にここを読んでくれている学生の方は外に出てみることをおすすめしますよ。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-819936650639365497?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/819936650639365497/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/03/2011.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/819936650639365497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/819936650639365497'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/03/2011.html' title='言語処理学会年次大会2011に参加しました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-4823302872649892442</id><published>2011-02-17T21:29:00.004+09:00</published><updated>2011-02-17T23:21:59.483+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>コンピュータがクイズチャンピオン破る</title><content type='html'>今日という日は自然言語処理業界はもとより，コンピュータの歴史の中で大変重要な日になったことでしょう．IBMのProject Watsonが，アメリカの人気クイズ番組Jeopardy!で，歴代のチャンピオンに勝利したのです．&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cnn.co.jp/fringe/30001845.html"&gt;ＩＢＭスパコン、クイズ王者２人と対決し完勝　米番組&lt;/a&gt;&lt;br /&gt;&lt;a href="http://togetter.com/li/102117"&gt;コンピュータWatson vs クイズ王の対戦 - Jeopardy! &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;このプロジェクトは私が入社したころからすでに始まっていて，こういうチャレンジは本当にすごいなぁ，と思っていました．本当はこの日記も対戦日が決まったときに書こうと思って忘れていたのですが．&lt;br /&gt;&lt;br /&gt;では，何がそんなに画期的なのか．それは，クイズに答える，もう少し汎用的に言えば質問に答える，という作業はコンピュータにとってもっとも難しいタスクのひとつなのだということです．自然言語処理のタスクのひとつで，Question Answering (QA) と呼ばれます．Googleがあるだろう，難しいことはないだろう，と思われるかもしれません．検索 (Information Retrieval; IR) はQAの一段前のタスクで，QAはもう一段難しくなります．では，何が難しいのか．それは，質問文をそのまま検索しても答えはでてこない，というところです．たとえば，「&lt;a href="http://asunews.asu.edu/20101103_jeopardyquestions"&gt;1715年9月1日ルイ14世は，自身が建てた宮殿のある，この都市で死にました&lt;/a&gt;」という問題．答えはベルサイユです．どうでしょう，この質問文そのものをGoogleに投げて，&lt;span style="font-weight: bold;"&gt;検索結果から機械的に「ベルサイユ」という単語を抜き出せるでしょうか&lt;/span&gt;．たとえば，「この都市」と書いてあるから都市名に違いない，都市名のデータベースをもっておいて参照するなどが必要です．しかし，検索結果をちらりと見ると，「パリ」などの別の都市名もたくさん見られます．この中から正しく「ベルサイユ」を当てるのはそんなに簡単なことではありません．と，書いておきますが頻度が高いのでベルサイユを選ぶのは割りと簡単でしょう：）　問題がもっと複雑で，「ベルサイユ宮殿を建てた人が死んだのはいつでしょう」なんて問題になると，問題を2段階に解かないといけません．&lt;br /&gt;コンピュータは決められた演算を高速に大量に処理する道具です．一方で，こうした推論を直接行うことはできず，人間は逆にこの推論をきわめて高速に正確に行います．こうした人間の推論を機械的な手順に落とすことは現代になっても難しく，言語のような曖昧でもやもやしたものの扱いはいまだに簡単なことしかできないのです．いかにコンピュータが高性能になったとしても，どうやったら推論を演算に直せるのか．こうした部分に，このチャレンジの難しさがあるのです．&lt;br /&gt;ところでGoogleなどの検索エンジンのすばらしさというのは，このもっとも難しい「推論」の部分を人間に任せて，検索を行うという「演算」の部分だけに注力しているところだと思っています．そして，人間の「推論」をサポートするようなサマリーやランキングに注力することで，直接「推論」しなくても十分有用なツールに仕上げている点もすばらしいと思います．実は私はこういう，一番伸びしろのあるところをやれ的な考え方の方が好きで，QAというタスクは無駄に難しいところに注力しているようであまり好きではありませんｗ&lt;br /&gt;&lt;br /&gt;よく，この対決をすばらしいコンピュータ性能の進歩と捉える記述が目立ちます．たとえばCPUの性能や記憶容量などの記述です．それは真実なのですが，もっとも重要な点が抜け落ちているように感じます．コンピュータがすばらしい演算性能を達成してきた，という事実は何もクイズに答えなくても，さまざまなスーパーコンピュータの出現やそれによる大規模なシミュレーションなどのアプリケーションですでに示されてきた過去があります．しかし，そうしたことが可能となった現代においても，特定のクイズ形式に答えるという形に限ったとしても，人間と同等の質問応答を達成することは過去に一度もなかったのです．今の1000倍の時間がかかってもいいから同じアプリケーションが今までにできたかというと，そんなことはなかったのです．&lt;br /&gt;コンピュータの行う「演算」と，人間の行う「推論」には大きなギャップがあります．よく，人間の「推論」を模倣したわけではない，コンピュータの「演算」で無理やり解いたに過ぎない，と反論する方がいらっしゃいます．しかし，手法がどうあれ人間と同等の「結果」を出すことが，少なくともクイズに関して可能になったことがはじめて確認されたのです．鳥のように羽ばたくわけではないが，飛行機が空を飛んだようなものです．それは，今までに誰も実現できないことが可能になった瞬間なのです．それを可能にしたのは，単純にエンジンの性能（コンピュータの性能）の向上のみではなく，羽やプロペラなどの画期的な発明（自然言語処理技術，検索技術，機械学習技術）の賜物だったのです（いや，飛行機あんまり知らないけど・・・）．まぁ，あれです．ボクらもがんばってるんだよアピールですｗ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて，最後に．チェスのときもそうですが，機械という異生物に人間が敗北したのだ，という見方をされる方をたまに見ます．しかし，こうしたものを作り上げてきたのが，技術者や研究者などのまぎれもない人間だということを忘れないで欲しいのです．この勝利は，人間の技術が人知に対して部分的に勝利した，それはまさしく人間の勝利なのです．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-4823302872649892442?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/4823302872649892442/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/02/blog-post_17.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/4823302872649892442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/4823302872649892442'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/02/blog-post_17.html' title='コンピュータがクイズチャンピオン破る'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-1454038621127685924</id><published>2011-02-10T23:55:00.004+09:00</published><updated>2011-02-11T01:21:51.192+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='写真'/><title type='text'>ズームレンズに関する誤解</title><content type='html'>最近，会社の人と話していて，ズームレンズに関してすごく誤解されていることがよくわかった．しかし，思い返してみれば一眼レフを買うまで私も同じ誤解をしていたので，決して責めてはいけない．つまり，&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ズームというのは，遠くのものを「大きく写す」，という意味でのズームでは決してない&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ということだ．カメラの世界ではこれを「&lt;span style="font-weight: bold;"&gt;望遠&lt;/span&gt;」という．反対語は「広角」．「ズーム」は別の概念．なので，「遠くまで写せて，すごいズームですね」というのは，「データをいくらでも保存できて，すごいCPUですね」と同じくらい変な指摘なのだ．もちろん，同じ世代ならHDD容量とCPUの速度に正の相関があるくらいには納得できる（高倍率ズームなら超望遠である可能性が高い）．&lt;br /&gt;では肝心のズームとはなにか．ズームとは，1つのレンズで&lt;span style="font-weight: bold;"&gt;異なる大きさ&lt;/span&gt;に写せるレンズのことだ．反意語は単焦点．つまり，自分が動かなくても大きさを変えられるということだ．なので，たとえば大きく写せる単焦点も，小さく写るズームもある．&lt;br /&gt;&lt;br /&gt;さて，次の誤解．誤解というか勘違いだが．上の説明で，大きく写せると書いたがこれは正確ではない．なぜなら，そもそも近づけばどんなレンズでも大きく写せるからだ．正確には，&lt;span style="font-weight: bold;"&gt;狭い範囲だけを写すレンズ&lt;/span&gt;，というのが正しい．狭い範囲だけを同じサイズに引き延ばせば，当然拡大される．そういう仕組みだ．この範囲のことを&lt;span style="font-weight: bold;"&gt;画角&lt;/span&gt;という，がふつうかかれていない．これは，焦点距離とセンサーのサイズで決まる．センサーサイズはふつう固定なので，焦点距離で判断する．なので，○○mmとかかれているのだ．しかし，この説明はなかなか納得してくれない．だって大きく写るじゃないか．では，何を基準にして何倍大きいというのだろう．先ほど書いたとおり，そもそも近づけば大きくなるのに何を基準にするんだろうか．昨日，これに関してよい説明を見つけた．&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ts-pw.com/column-20080127.html"&gt;倍率って何なの？&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;（略）例えば35mm一眼レフだと焦点距離50mmレンズの倍率がおおむね肉眼と等しい１倍とされている。焦点距離が4倍の200mmレンズなら倍率も4倍、500mmだと10倍と考えることができるわけだ。（略）&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;これはわかりやすい．肉眼に比べて何倍くらいに見えるか，という指標を見るなら，スペック表の望遠側（○○mmとかいてあるなかの数値の大きい方）の数字を50で割ろう．これが，きっとあなたの求めている「倍率」だ．&lt;br /&gt;&lt;br /&gt;では，光学30倍ズーム，とかいってる30倍ってなんなの？　これは先ほど書いた，「肉眼と比べた倍率」のことではない．これは，ズームレンズの広角側と望遠側の比のことだ．たとえば，25-300mmのズームレンズは，12倍ズームだ．ここで注意しよう．これは，肉眼の12倍のことではない．広角側が25mmなので，肉眼の1/2倍，そして望遠側が300mmなので肉眼の6倍．この差が12倍と言っているのだ．&lt;br /&gt;意外と驚かれた実例を見てみよう．&lt;br /&gt;&lt;a href="http://dc.watch.impress.co.jp/docs/news/20110207_425471.html"&gt;ソニー、30倍ズームの「サイバーショットDSC-HX100V」を国内発表&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dc.watch.impress.co.jp/docs/news/20110209_425817.html"&gt;ニコン、広角端22.5mmからの光学36倍ズームレンズ搭載機&lt;/a&gt;&lt;br /&gt;タイトルの情報だけでは望遠の能力，つまり肉眼の何倍かは&lt;span style="font-weight: bold;"&gt;わからない&lt;/span&gt;．スペック表を見てみよう．前者は27-810mm，後者は22.5-810mm．最大で肉眼の何倍に写るか，という点で両者は同じである．繰り返す，&lt;span style="font-weight: bold;"&gt;30倍ズームと36倍ズームだが，見える大きさの最大は同じだ&lt;/span&gt;．どこに違いがあるかというと，広角側だ．これはどれくらい小さく写せるか，言葉を換えるとどれくらい広い範囲を写せるかだ．飲み会の会場のような狭い空間で複数人を撮るときなどに威力を発揮する．この点でニコンに軍配が上がっているということだ．&lt;br /&gt;&lt;br /&gt;最後の誤解．光学ズームは画像の劣化がない．ウソだ．レンズはもちろん高校物理で習ったスネルの法則を利用している．しかし，あのとき習った&lt;span style="font-weight: bold;"&gt;理想的なレンズというのは世の中に存在できない&lt;/span&gt;．なぜか．簡単な話だ．波長によって屈折率が違うからだ（他にも理由があるかもしれないが，これが一番簡単に説明できる）．波長によって光の進み方が違うのに，どうして1点で交わるというのだ．たとえば今お使いのめがねの端の方を見てみよう．黒い物体と白い物体の境界に赤か青の線が見えないだろうか．&lt;br /&gt;聞きかじった程度の知識だが，レンズ設計とはこれがいい塩梅になるように屈折率や焦点距離の異なるレンズを複数組み合わせて妥協点を見つけることだ．昔は職人芸だったらしいが，今では計算機で行う．ズームレンズはこれがさらに難しい．あらゆる焦点距離でそこそこいい感じにしないと行けないからだ．ズーム倍率が大きくなれば大きくなるほど難しくなる．なので，倍率の高いカメラを買った割に画質があがった気がしなかったとしてもお門違いというわけだ．&lt;span style="font-weight: bold;"&gt;高倍率ズームは画質ではなく便利さを買っているのだ&lt;/span&gt;．交換無しで（コンデジの時点でできないが・・・），あらゆる焦点距離を使えるというのはフットワークの軽さを高めてくれる．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ところで，先ほど書いたとおり50mmが標準と言われるのだが，ふつうのコンデジはこれよりも広角がデフォルトになっていることが多いと思う．なぜか．これは，私の予想だが&lt;span style="font-weight: bold;"&gt;広角の方が失敗が少ないからだ&lt;/span&gt;．典型的な失敗は2つ．一つは手ぶれ，もう一つはピンぼけ．広角はどちらも起こりにくい．広角というのは，画角が広い．なので，たとえば10度の望遠レンズを使って1度分手ぶれしたら，10％もぶれていることになるのだが，100度の広角なら1％くらいだ．さらに，広角の方が広い範囲から光を集めるので，シャッタースピードが速い．速いと言うことはぶれる時間も少ない．ピンぼけに関しては，望遠の方がピントの合っている領域（被写界深度）が狭い．広角の方がひろい．ということは，広角ならだいたいピントがあう．そんなわけで，巷では広角写真があふれかえっていて，中望遠くらいが好きな私としては若干うんざり気味なのである．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-1454038621127685924?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/1454038621127685924/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/02/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1454038621127685924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1454038621127685924'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/02/blog-post.html' title='ズームレンズに関する誤解'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5503498167065299745</id><published>2011-02-01T00:21:00.003+09:00</published><updated>2011-02-01T01:28:17.833+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>第200回NL研に参加しました</title><content type='html'>先週，&lt;a href="http://www.nl-ipsj.or.jp/NL200program.html"&gt;SIG-NL 200&lt;/a&gt;に聴講者として参加しました．NHK放送技研に潜入できる！と意気揚々と行ったのですが，どうやら建物自体には入れず，脇にある講堂のようなところが会場でした．中に入ったからといって何があるというわけでもないんですが．&lt;br /&gt;&lt;br /&gt;さて，第200回記念ということで，歴代主査の先生も呼んでパネル討論まであったのですが，参加人数はイマイチ．少々寂しい．パネル討論でも最近盛り上がりに欠けるよね，というのが大きな一つのテーマでした．詳細は&lt;a href="http://d.hatena.ne.jp/mamoruk/20110128/p1"&gt;@mamorukさんのブログ&lt;/a&gt;を参照．私の印象としては，発表者のインセンティブになるようなメリット，つまりアドバイスやコメントや議論が少ないというのが一番よくないなぁと思っています．発表すると関連研究を教えてもらえる，アドバイスをもらえる，新しい発想が得られる，これはよいまた発表しよう，新しい発表が聞ける，また聞きに行こう，というサイクルが回れば参加者も増えそうですが，今はその逆になっているように思います．これに限らず，発表準備はそれなりにコストのかかることなわけで，発表者にインセンティブが働く仕組みがなければ勉強会でも何でも続かないですよね．経験的にも・・・．&lt;br /&gt;討論の中で印象的だったのは，松本先生の「何となくみんな忙しい」という言葉でした．なるべく多くの研究者が集まった方がいいとは思いますが，仕事が「何となく」忙しいと難しいですよね，何となく．めちゃくちゃ忙しいはずの（実際は知らないけど）松本先生が，毎回のようにいらしているのはすごいなぁといつも感服します．自分も忙しいとか言ってないでちゃんと時間を見つけられるようにしないと．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;発表で気になったのはロンゴロンゴでした．完全にタイトルでだまされましたｗ　昨年の5月も聴講したので発表を聞くのは2回目ですが，すごい楽しそうに研究していて，いいなぁと思っていました．たまたま帰りのバスで一緒になったので，色々教えてもらいました．未解読言語の解析というのはわくわくしますね．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5503498167065299745?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5503498167065299745/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/02/200nl.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5503498167065299745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5503498167065299745'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/02/200nl.html' title='第200回NL研に参加しました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-8355564862762418618</id><published>2011-01-23T21:01:00.001+09:00</published><updated>2011-01-23T21:03:23.806+09:00</updated><title type='text'>電子書籍はじめました</title><content type='html'>@hillbigさんが絶賛していたので，昨年末Kindleを買いました．そして，最近ようやく届きました．早速使ってみたのですが，これはいい！　&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;良い点&lt;br /&gt;&lt;ul&gt;&lt;li&gt;軽い&lt;/li&gt;&lt;li&gt;ボタンなので片手で操作できる&lt;br /&gt;&lt;/li&gt;&lt;li&gt;見やすい&lt;/li&gt;&lt;li&gt;電池長持ち&lt;/li&gt;&lt;/ul&gt;悪い点&lt;br /&gt;&lt;ul&gt;&lt;li&gt;日本語の書籍が無い&lt;/li&gt;&lt;li&gt;同期周りの機能がいまいち&lt;/li&gt;&lt;/ul&gt;一番の印象は軽いということです．iPadは常に持ち歩くには重いです．私は休日などは小さめのかばんを持ち歩くのですが，iPadでは大きくて入りません．そして，実は大事なのがボタン操作という点です．古臭いという人もいるかと思いますが，ボタンのおかげで持っていてでそのまま次ページボタンが押せます．片手で読めます．手袋をしていても読めます．500ページのハードカバーの洋書が片手でサクサク読める．小さなところですが，新しい読書スタイルという感じで感動しますよ．他の2点は省略．&lt;br /&gt;日本語書籍がamazonから購入できないのは周知の事実ですが，いろいろな経路で発売され始めているところを見るに，今年中にはamazonからも発売されるんじゃないでしょうか．機能面で気になるのは同期周りの機能がいまいちな点です．amazonで買った書籍は自動同期されますが，その他は自分でコピーしないといけません．しかも，カテゴリわけなどはKindle側で振り分ける必要があるみたいです．ACL2010の論文を全部入れたら全部手動で振り分ける羽目になって泣けます．それから，ファイル名での検索ができないようで，これも泣けます．いくつか改善して欲しい点もありますが，次期バージョンで改善されることを期待します．&lt;br /&gt;&lt;br /&gt;論文読むツールとしてどうなの？という議論は以前からありましたが個人的にはこれでOKという結論に至りました．縦位置にするとさすがに文字が小さいですが，横にしてスクロールすれば普通に読めます．本当は余白部分を自動トリミングして欲しいです．最初，1/4分割するツールを使おうかと思いましたが，面倒なので辞めました．横位置で十分です．メモ書きなどは一応できますが，日本語入力できませんね・・・・．&lt;br /&gt;自炊環境はちょっと迷い中です．新書や文庫もよく読むので，それをKindleにしたいのですが，そのためにうん万かけて裁断機とスキャナとか買うのはちょっとなぁと思ってます．自分の「読み」としては，今年中にKindle用の日本の書籍が出回ることを期待しています．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて，Kindleはデバイスとしてみればまったくパッとしない時代遅れな印象すらあります．しかし，個人的にはそこにだまされてはいけないと思ってます．iPadもそうなのですが，よく「こんなデバイスは日本企業なら作れるよ」とう議論を聞きます．きっとそれは本当なんですが，そこよりもこういうデバイスがあればこういうすばらしい使い方ができるよ，ということを示したところに，iPadもKindleもすばらしいところがあるんだと思います．例えば，Whisper Syncとか．そうした周辺サービスも含めてデバイスを見ないと．Kindleをもっと高機能でもっとfancyなデバイスにすることはできたはずですが，読書ツールとして考えたときに，バッテリーのもちとシンプルな操作体系が優先されたんではないかと思います．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-8355564862762418618?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/8355564862762418618/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/01/blog-post_23.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8355564862762418618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8355564862762418618'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/01/blog-post_23.html' title='電子書籍はじめました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-1444336283195096969</id><published>2011-01-06T23:31:00.002+09:00</published><updated>2011-01-06T23:45:16.753+09:00</updated><title type='text'>本年もよろしくお願いします</title><content type='html'>あけましておめでとうございます。無事に新年を迎えました。&lt;br /&gt;毎年恒例の今年の目標など。のまえに、昨年の目標なんだったっけ？から。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/u-no/20100101#1262279629"&gt;2010年の目標&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;見事に達成されていませんねｗ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;論文は結局100本くらいでした。後半仕事が忙しくなったのが敗因。質より量でどかっと読めるようになりたい&lt;/li&gt;&lt;li&gt;論文紹介は1Qくらいしか続きませんでしたｗ&lt;/li&gt;&lt;li&gt;国内発表は3回でした。4Qで発表しようと思ってた内容が特許審査に詰まってしまったのが原因のひとつ&lt;/li&gt;&lt;li&gt;海外発表はことごとく落ちました（泣&lt;/li&gt;&lt;li&gt;特許は4つ書いて3つ社内審査に受かりました&lt;/li&gt;&lt;/ul&gt;もうちょっとがんばれると思ってましたが、仕事が忙しくなるとなかなか手が回らなくなります。もっとがんばろう。&lt;br /&gt;他、&lt;br /&gt;&lt;ul&gt;&lt;li&gt;車は1回だけ運転しました。7年ぶりくらい&lt;/li&gt;&lt;li&gt;写真は結局7000枚くらいでした&lt;/li&gt;&lt;li&gt;コンテストは2回くらいしか応募してないな。もうちょっと作品を意識して撮りたい&lt;/li&gt;&lt;li&gt;研究会イベントは@nokunoさんイベントなどで発表させていただいた&lt;/li&gt;&lt;li&gt;semi-supervisedは本を読んで終わってしまった&lt;/li&gt;&lt;li&gt;パン焼いた、ケーキ焼いた、そば打った&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;今年の目標ですが、もう少し視野を広げられるようになりたいです。研究もしかり、会社とか経済とか興味の続く限り片っ端から勉強できればいいな、と思います。でも、初詣で引いたおみくじには、いろいろやりすぎるな的なことが書かれていたな・・・&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-1444336283195096969?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/1444336283195096969/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2011/01/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1444336283195096969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1444336283195096969'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2011/01/blog-post.html' title='本年もよろしくお願いします'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-8726963533004328427</id><published>2010-11-07T23:37:00.003+09:00</published><updated>2010-11-12T02:40:33.053+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>自然言語処理勉強会@東京に参加しました</title><content type='html'>@nokunoさん主催の&lt;a href="https://groups.google.com/group/tokyotextmining?hl=ja"&gt;自然言語処理勉強会@東京&lt;/a&gt;で「統計的係り受け解析入門」というタイトルで話をしてきました．&lt;a href="https://sites.google.com/site/unnonouno/publication/tokyonlp_dependency_unno.pdf?attredirects=0&amp;amp;d=1"&gt;資料はこちら&lt;/a&gt;においておきます．CKYアルゴリズムに関して質問が多かったので，説明を加筆しました．&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_5724050"&gt;&lt;object id="__sse5724050" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=tokyonlpdependencyunno-101110031740-phpapp01&amp;stripped_title=ss-5724050&amp;userName=unnonouno" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5724050" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=tokyonlpdependencyunno-101110031740-phpapp01&amp;stripped_title=ss-5724050&amp;userName=unnonouno" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;内容は「入門」と銘打っておきながら，3rd order Eisnerまで紹介するアレな内容．どういう方が出席されるかわからなかったので，ちょっと最新の話題も入れてみたかったのでした．もともと社内セミナーで使った資料を半分流用しています．&lt;br /&gt;Eisner法の理解の肝は，三角と台形がCFGにおける非終端記号に相当している，三角が三角と台形に分割されるというルールが，CFGにおける書き換え規則に相当している，という点が理解できれば後はCFGの知識で理解できます．この記法に慣れてくると，例えば3rd orderの論文はほとんど図を見るだけで理解できます :)&lt;br /&gt;割愛しましたが，本当はこのあとスコアをどうやって学習するかという話しに行きます．log-linearにして，微分するとinside-outsideがでてきたり，周辺確率がinsideとoutsideの積で求まったりします．当然logsumexpもつかいますし，動的計画法のオンパレードです．&lt;br /&gt;&lt;br /&gt;学会と違って，企業の方が多かったのもありますが，どうやって応用するのかという議論がいたるところでなされました．これは非常に良いことだと思います．学術的には興味を誘わない話題，特に強調した分野適応や辞書リソースの効率的な構築法などは応用上きわめて重要だと考えています．学生時代分野適応なんて，特許かWebデータに適応することだろくらいに高をくくっていましたが，実際には特定分野のお客様（例えば製造業，医療，法律，銀行）にいかに効率的に分野適応できるかが性能の鍵を握っています．こうした問題意識と研究テーマをもっと啓蒙していかないとと思っています．MeCab以来教師あり形態素解析が進んでいませんが，こうした部分でものすごく問題を抱えたまま放置されている気がします．まぁ，自分がやればいいんですけどね．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-8726963533004328427?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/8726963533004328427/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/11/blog-post.html#comment-form' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8726963533004328427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8726963533004328427'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/11/blog-post.html' title='自然言語処理勉強会@東京に参加しました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-686287272359736088</id><published>2010-09-29T23:20:00.000+09:00</published><updated>2010-09-29T23:21:18.042+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='写真'/><title type='text'>商品開発力</title><content type='html'>フォトキナを睨んでか，8月あたりからデジタル一眼レフに関して自分の感覚では革命的といわれうるような大きな流れをみました．一つはソニー，もう一つはキヤノンです．日経○○をよく読むのですが，その中で将来のイメージセンサやデジタルカメラがどうなるのか，という予想，ロードマップのようなインタビュー記事を読みました．ここ数年で劇的に変わってきた，感覚的ですがそれはまさにコンピュータ屋がハードづくりからソフトづくり，そしてサービスづくりに変わっていったようなものに似ているのかなという印象を受けました．&lt;br /&gt;&lt;br /&gt;最近，デジカメ界で話題をさらいまくっているのがソニー陣営でしょう．超小型のミラーレスなのにAPS-CのNEXは衝撃的で，しかも市場にも受け入れられているようです．しかし，先日発表されたα55とα33，これは私の中ではさらに衝撃的でした．メインストリームクラスの一眼レフに電子ビューファインダーを採用という点です．不可侵にして犯さざるべからずだったファインダーがついに，という感じです．将来的に光学ファインダーは絶滅するだろう，というような予想をされている方は過去にも見たことがあるのですが，こんなに早く，いやもうそういう上位機種でも実用段階に来ているんだと思わされました．加えて，透過光ミラー．従来のカメラ造りをする時代ではないんだよ，というような主張，気概が最近のソニーのものづくりには滲み出ているように感じます．&lt;br /&gt;&lt;br /&gt;もう一社，衝撃的なニュースを連発したのがキヤノンでした．&lt;a href="http://web.canon.jp/pressrelease/2010/p2010aug24j.html"&gt;1億2000万画素のCMOSセンサー&lt;/a&gt;（従来の7.5倍）と，&lt;a href="http://web.canon.jp/pressrelease/2010/p2010aug31j.html"&gt;20cm x 20cmの巨大CMOSセンサーの開発&lt;/a&gt;（従来の40倍）です．どちらのニュースも目を疑いました．半導体開発に関して素人なのですごさの10％も理解できてないんでしょうが，簡単に集積度を上げられるとも思いませんし，巨大化すると歩留まりも劇的に悪くなる気がします．ただ，素人目でもはっきりと「躍進」とわかるような変化を作れるだけのパワーと度胸には感服します．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;最近というわけでもないですが，他に注目株なのがパナソニックとサムスンでしょうか．こうした家電メーカーの方が斬新なアイデア，顧客のニーズ，新しい取り組みに積極的，またそれを遂行するだけの基礎体力が備わっているように感じてしまいます．ソニーはαとサイバーショットの2つの血がうまく結合したのかな，と思います．こうした点は古株の職人気質なメーカーは，折角の技術力を生かしきれずに歯がゆく感じます．我らがPentaxもK-5を発表しましたが，やはりセンサーが変わった以上のインパクトを出せていないのかなと．最近のPentaxのデザイン路線は，デザイン好きとしては好感が持てますし，そうしたニーズは確実に存在するので力を入れていって他社と違うモノづくりをして欲しいところです．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-686287272359736088?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/686287272359736088/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/09/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/686287272359736088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/686287272359736088'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/09/blog-post.html' title='商品開発力'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5222696474251060463</id><published>2010-09-18T09:18:00.004+09:00</published><updated>2010-09-18T09:23:16.578+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>NLP若手の会シンポジウム</title><content type='html'>&lt;a href="http://yans.anlp.jp/modules/menu/main.php?page_id=92&amp;amp;op=change_page"&gt;NLP若手の会シンポジウム&lt;/a&gt;で発表しました．前々から何度も参加はしてたんですが，発表は初めて．タイトルは緩い感じの会議ですが，発表者も参加者も30台前後のポスドクや助教，博士課程学生が中心で，議論も活発，新規な内容が多い．特に自分の同世代，近い世代の人たちがこんなに活躍しているというのを見れて，とてもよい刺激になります．そういうのは，会議の前に書けって？　すいません．&lt;br /&gt;&lt;br /&gt;私の発表の内容なんですが，一言で言うとKWIC (KeyWord In Context)をかっちょよくしました，という内容です（片側しか見てないからKWICじゃ無いじゃん，と突っ込まれました．実は事前に坪井さんにも突っ込まれてました）．KWICは検索結果を俯瞰するのに便利なんですが，ヒット数が多いと全体を見られなくなります．なので，うまい単位でまとめたい．これを探索問題として定式化してあげると，動的計画法に落とし込めます．さらに，最大値を求めるということは，一番最大っぽいところを探索したら，残りはそれを超えないことを確認すればOKという感じで，スコアの上限を求める関数で枝刈りをします．最後に，あらかじめ接尾辞木を頻度順に並べておくことで，TRIEの構築もサボれます．もともと，入力支援に使おうと思っていて，発表の1週間前に狙ったように&lt;a href="http://scribe.googlelabs.com/"&gt;Google Scribe&lt;/a&gt;がでて困りました．デモ画面そっくり．&lt;br /&gt;枝刈りのアイデアは，オセロのαβ枝刈りからインスパイアされました．αβ枝刈りは，最大値を求めるときに，超えなければいけない上限を渡して探索する方法です．学部時代にオセロプログラム大会をやったことがあって，move orderingとか色々知識を持っていました．どこでどういう知識が役にたつかなんてわからない，知れる機会があれば何でも知るべき，ということを少し体現できたかなと思います．&lt;br /&gt;&lt;br /&gt;他の発表ですが，奨励賞の松林さんは同じセッションで聞けなかったのが残念．高村さんの語彙をつくる話は，「言語とは何ぞや」という問題に対して新しいアプローチで迫っていて面白かったです．私ももっと夢のある話をした方がよかったかなぁ．それから，内田さんがオノマトペと動詞の対応みたいな話をしてました．一応，私も言語処理学会でオノマトペネタを（共著で）発表したので気になります．当時色々アイデアを出して，ほとんどやってなかったので少しやろうかな．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;いくつか聞いてて，やっぱり自分は応用よりだ，と思いました．工藤さんの講演での回帰テストの話とか，それに対する岡野原さんの質問とか，T2ミーティングでの橋本さんの話とかがやっぱり自分にはピンとくるところがあって，企業系の人（あるいはアプリ屋さん）がもってる問題意識とアカデミックの問題意識でギャップが進んでいるように思いました．もっとも，そこはちゃんと住み分けが進んでていいとも思っています．むしろ，アカデミックには短期の実用より，長期的に見て必要な基礎研究を進めて欲しい．ただ実用まで持っていくにはこれだけ必要なステップがあるよ，そしてどこも手を抜けないよ，ということが一歩引いたところから俯瞰して共有できればいいなと思います．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5222696474251060463?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5222696474251060463/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/09/nlp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5222696474251060463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5222696474251060463'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/09/nlp.html' title='NLP若手の会シンポジウム'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-881793401174309318</id><published>2010-09-06T00:09:00.004+09:00</published><updated>2010-09-06T00:14:09.287+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>logsumexpとスケーリング法</title><content type='html'>少し前にtwitter上でCRFSuiteはスケーリング法を使っているから速い，的なことを書いたのでその解説です．&lt;br /&gt;&lt;br /&gt;linear-chain CRFのパラメタ推定に必要なのは対数尤度関数の微分です．これの計算に必要なのが，前向き・後ろ向きのスコアαとβです．時刻t（系列上での位置）とラベルiに対する前向きスコアαは，以下の式で計算されます．fは特徴ベクトル，wは重みベクトルです．&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.google.com/chart?cht=tx&amp;amp;chf=bg,s,FFFFFF00&amp;amp;chco=000000&amp;amp;chl=%5Calpha_%7Bt%2C%20i%7D%20%3D%20%5Csum_j%20%5Cexp%28w%20%5Ccdot%20f%28t%2C%20i%2C%20j%29%29%5Calpha_%7Bt-1%2C%20j%7D" /&gt;&lt;br /&gt;&lt;br /&gt;ところがこのままだと問題が起こります．αの値はexp個の足し算で構成されるため，最終的にかなり大きくて，簡単に倍精度の限界を超えてしまうのです．困った．そこで，logの世界に落とします．αの代わりにlog(α)を計算します．すると，expの世界の掛け算はlogの世界の足し算になります．問題は，足し算です．expの世界の足し算を，logの世界で行う２項関数がlogsumexpです．&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.google.com/chart?cht=tx&amp;amp;chf=bg,s,FFFFFF00&amp;amp;chco=000000&amp;amp;chl=%5Ctext%7Blogsumexp%7D%28x%2C%20y%29%20%3D%20%5Clog%28%5Cexp%28x%29%20%2B%20%5Cexp%28y%29%29" /&gt;&lt;br /&gt;&lt;br /&gt;で定義されます．expをかけてるから，結局オーバーフローしてしまうように見えますが，以下のように式変形することで，見事にオーバーフローしなくなりました．ただし，y &amp;lt; x とします．&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.google.com/chart?cht=tx&amp;amp;chf=bg,s,FFFFFF00&amp;amp;chco=000000&amp;amp;chl=%5Clog%28%5Cexp%28x%29%20%2B%20%5Cexp%28y%29%29%20%3D%20x%20%2B%20%5Clog%281%20%2B%20%5Cexp%28y%20-%20x%29%29" /&gt;&lt;br /&gt;&lt;br /&gt;これを使うとlogαの計算は以下のようになります．&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.google.com/chart?cht=tx&amp;chf=bg,s,FFFFFF00&amp;chco=000000&amp;chl=%5Clog%20%5Calpha_%7Bt%2Ci%7D%20%3D%20%5Ctext%7BLogSumExp%7D_j%20%5C%7Bw%5Ccdot%20f(t%2Ci%2Cj)%20%2B%20%5Clog%5Calpha_%7Bt-1%2Cj%7D%5C%7D" /&gt;&lt;br /&gt;&lt;br /&gt;ここまでがlogsumexpの話．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;logsumexpを使い出すと，今までただの足し算でよかったのにlogやらexpやら，いかにも重そうな関数を使わなくてはならなくて激しく遅くなります．できる事ならexpの世界のまま計算したい．そこで使われるのがスケーリング法です．ここで大事な点を思い出します．最後に計算したかったのは周辺確率です．つまり，0から1の間に収まるような値が出力です．最後にZで割れば，彼らは器用にoverflowもunderflowもおこしません．ということは，少しずつ割っていって，最終的にZで割った値が出るように調整してあげれば，オーバーフローせずに計算が終わるはずです．&lt;br /&gt;&lt;br /&gt;時刻 t ごとに和が 1 になるように正規化したα'を以下で定義します．&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.google.com/chart?cht=tx&amp;amp;chf=bg,s,FFFFFF00&amp;amp;chco=000000&amp;amp;chl=%5Calpha%27_%7Bt%2C%20i%7D%20%3D%20%5Cfrac%7B%5Calpha_%7Bt%2Ci%7D%7D%7B%5Csum_j%20%5Calpha_%7Bt%2C%20j%7D%7D" /&gt;&lt;br /&gt;&lt;br /&gt;これを，普通のα同様にα'の再帰計算で計算できればlogの世界で計算する必要がなくなるという寸法です．結局α'は，毎時刻ごとに1になるように正規化しているだけなので，正規化するときに割った値を覚えておけばよいのでした．ちなみにこのテクは，PRMLのHMM（だったかな？）の章に書いてあります．って教わりました．&lt;br /&gt;&lt;br /&gt;ところで，これで本当に速くなるんでしょうか．改めてαの式とlogαの式を見返して見ます．確かにαにはlogsumexpがありません．しかし，logαでは実は重みベクトルと特徴ベクトルの内積に対するexpが消えました．結局，logsumexpの代わりにexpになっただけ，このままではexpの実行回数で両者に差がありません．ここにもう一つトリックが存在します．一般にlinear-chain CRFではラベル遷移の特徴（遷移素性）と各時刻ごとの特徴（状態素性）は別々にあらわされます．つまり，&lt;br /&gt;&lt;img src="https://www.google.com/chart?cht=tx&amp;amp;chf=bg,s,FFFFFF00&amp;amp;chco=000000&amp;amp;chl=f%28t%2C%20i%2C%20j%29%20%3D%20f_1%28t%2C%20i%29%20%2B%20f_2%28i%2C%20j%29" /&gt;&lt;br /&gt;という2種類の特徴量に分けられています．ラベル数L，文長Tとします．これらのexpはあらかじめ計算しておくと，必要なexpの計算量はO(TL + L&lt;sup&gt;2&lt;/sup&gt;)，一方でlogαではO(TL&lt;sup&gt;2&lt;/sup&gt;)．結果的にαを直接計算した方が，つまりスケーリング法の方が速くなるのでした．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ところで，そんなわけで私も以前スケーリング法を実装したのですが，なんだか思わぬタイミングでoverflowやunderflowを起こしてしまいます．なので，私も完璧に理解したわけではありません．まだ実装上のテクニックがあるのかもしれません．logsumexpもスケーリング法も，たまたま何かで見たり，たまたま教えてもらったり，罠がいっぱい．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-881793401174309318?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/881793401174309318/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/09/logsumexp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/881793401174309318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/881793401174309318'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/09/logsumexp.html' title='logsumexpとスケーリング法'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-1274165833197608934</id><published>2010-07-29T22:57:00.010+09:00</published><updated>2010-07-29T23:53:41.665+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='プログラミング'/><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><title type='text'>高速な復元抽出の直感的な説明</title><content type='html'>先日&lt;a href="http://twitter.com/niam/status/19384695682"&gt;@niam&lt;/a&gt;さんと&lt;a href="http://twitter.com/tsubosaka/status/19386159260"&gt;@tsubosaka&lt;/a&gt;さんのつぶやきを見てて，確率{p&lt;sub&gt;i&lt;/sub&gt;}で復元抽出するWalker's alias methodというものを知りました．たまたま，今日，復元抽出する用事があったので，思い出して調べた次第．私も昔同じことをやろうとして，O(log n)でいけるからまぁいいやと思っていたのですが，このアルゴリズムだとO(1)でいけます．&lt;br /&gt;&lt;br /&gt;解説はこのあたりのブログを参照．&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/koiti_yano/20070826/p1"&gt;比較的高速な復元抽出アルゴリズム&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/higotakayuki2/20070826/p1"&gt;高速に非復元抽出をするアルゴリズムはないだろうか？(2)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;さて，私は理解力が足りなくてこのあたりの説明を読んでもなんでこれでいいのかさっぱりわからなかったので，絵に描いて理解しました．確率{p&lt;sub&gt;i&lt;/sub&gt;}で復元抽出するためには，p&lt;sub&gt;i&lt;/sub&gt;に比例した面積の図形を壁に貼ってダーツをすればいいのです．{0.1, 0.05, 0.3, 0.1, 0.45}だったとします．するとこんなの．&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 195px;" src="http://4.bp.blogspot.com/_3pMPX8vRG80/TFGO2lIm-VI/AAAAAAAAATM/PPfJpqZC20A/s200/p.PNG" alt="" id="BLOGGER_PHOTO_ID_5499333688328386898" border="0" /&gt;&lt;br /&gt;まさか毎回ダーツ投げさせる訳にもいかないので，randを呼びます．でも，これでは何がうれしいのかわかりません．四角形にしてみましょう．&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 181px;" src="http://3.bp.blogspot.com/_3pMPX8vRG80/TFGPMRPqDkI/AAAAAAAAATU/gnYslSGC0Y0/s200/b.PNG" alt="" id="BLOGGER_PHOTO_ID_5499334060946361922" border="0" /&gt;&lt;br /&gt;ちょっとうれしさがわかってきました．rand.nextDouble()の値が，たとえば0.2から0.4の間なら橙にすればよいのです．このおおざっぱな0.2ずつの区間のことをここではブロックとでも読んでおきましょう．ところが，0から0.2の間ならどうでしょう．3色もあります．もっと詰まっていたら．やっぱり2分探索が必要な気がします．そこで，一つのブロックの中に高々2種類しかないような区切り方はできないでしょうか．できます．これができれば1回比較すればよいだけです．ブロックをnこ（ここでは5個）用意すれば可能です．こんな感じ．&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 181px;" src="http://4.bp.blogspot.com/_3pMPX8vRG80/TFGQtSqfk0I/AAAAAAAAATc/ZCRyBKGJpL4/s200/b2.PNG" alt="" id="BLOGGER_PHOTO_ID_5499335727774667586" border="0" /&gt;randが0から0.2なら，つまり5倍してintにキャスとして0だったら，もう一度0.1以上か否かチェックして，以下なら青，以上なら橙を返せばOK．このブロックを作ってるのがWalker's alias algorithmです．まず，p&lt;sub&gt;i&lt;/sub&gt;をn倍したものをq&lt;sub&gt;i&lt;/sub&gt;とします．q&lt;sub&gt;i&lt;/sub&gt; &amp;lt; 1のものに一つずつブロックを割り当てます．図だと，青赤緑．次に，残った q&lt;sub&gt;i&lt;/sub&gt; &amp;gt; 1のものはq&lt;sub&gt;i&lt;/sub&gt; &amp;lt; 1が消費したブロックのあまりにとりあえず詰めていき，1以下になったら新しいブロックに割り当てます．橙は青と赤のあまりに詰めたところで1以下になったので，新しいブロックをもらいました．灰は残りに割り当てて完了．割り当て数はn個，上記の方法なら各ブロックごとに新しいブロックを一つずつしか消費しないので，最大でもn個ブロックがあれば十分なことがわかります．保存すべき情報は，各ブロックごとに境界となっている位置，2種類の色です．片方の色はインデックスと一致させておけばよいので，境界ともう一方の色だけ覚えればよいのでした．&lt;br /&gt;&lt;br /&gt;ちょっとあまりに見事な方法だったので記事にしてみました．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-1274165833197608934?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/1274165833197608934/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/07/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1274165833197608934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1274165833197608934'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/07/blog-post.html' title='高速な復元抽出の直感的な説明'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3pMPX8vRG80/TFGO2lIm-VI/AAAAAAAAATM/PPfJpqZC20A/s72-c/p.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-2579640320192265101</id><published>2010-07-26T02:03:00.000+09:00</published><updated>2010-07-26T02:06:41.082+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='写真'/><title type='text'>3D映画と視差とボケ</title><content type='html'>ちょっと前に会社の人とAlice in Wonderlandを観にいきました．もちろん，ここで映画の感想うんぬんを語る気は毛頭なくて，最近妙に流行りだした3D映画といわれる技術に関してです．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2次元のスクリーン上に映し出された映像で立体物を見ているような感覚を得られる原理の基本は，&lt;a href="http://ja.wikipedia.org/wiki/%E4%B8%A1%E7%9C%BC%E8%A6%96%E5%B7%AE"&gt;両眼視差&lt;/a&gt;による効果です．左右の目に別々の画像を見せているわけです．立体視の方法は&lt;a href="http://ja.wikipedia.org/wiki/%E7%AB%8B%E4%BD%93%E8%A6%96"&gt;他にも色々ある&lt;/a&gt;わけですが，もう一つの代表的な方法が目の焦点によるものです．つまり，ピント．3D映画の場合，スクリーンまでの距離は一定なので，この方法で奥行きを認識できません．感じた違和感の一つはたぶんこれです．両眼視差的にはこのくらいの距離のはずなのに，ピントは別のところにあってるなぁ，という感覚．しかし，たぶんもっと感じた違和感はそこではなくて，ボケのせいだと思います．焦点の合ってない部分はボケて見えるわけですが，写真や動画でももちろん焦点の合ってない部分はボケますし，特に強調されて撮影されます．これに，3D映画の両眼視差を組み合わせると変な感覚がするのです．&lt;br /&gt;&lt;br /&gt;そもそも写真とか動画において&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%B1_%28%E5%86%99%E7%9C%9F%29"&gt;ボケ&lt;/a&gt;というのは表現手法の一つなわけですよね．自分の感覚では，人間の目は典型的な写真や映画ほど被写界深度が浅くない（それほどボケてない）のですが，意識が行ってないもの，あるいは視差のあってないものの情報はほとんど入ってこないように感じます．この，情報の入ってこない感覚を2次元の写真や動画で表現するために，人間の目よりも大きなボケで表現しているんだと考えています．写真を見ると全体にフォーカスがあうので，実際の目よりもボケを強調した方が，実際の認識に近い感覚が得られるんだと思います．そのため，2次元で見せるときはボケを強調する必要があったわけですが，今の3D映画はこの強調されたボケをそのまま取り込んでいます．&lt;br /&gt;現状の3D映画を見る限り，両方がごっちゃになっていて妙な違和感を感じます．具体的に言うと，画像的にボケてる部分を見たときボケてるのに視差は合っていて，そのとき画像的にボケてないところは視差が合わないということが起こります．何だろうこれは．彫刻の一部に「ボケ」といってもやもやした謎の物体が置かれてる感覚です．画像的にぼけている部分に視差をあわせられてしまうのが問題の気もします．まだ黎明期ということで，これから新しい表現方法が作られていくでしょう．そちらに期待．あるいはパンフォーカスっぽい表現が流行るのかもしれません．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-2579640320192265101?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/2579640320192265101/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/06/3d.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2579640320192265101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2579640320192265101'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/06/3d.html' title='3D映画と視差とボケ'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-4574636243965629192</id><published>2010-07-07T23:36:00.004+09:00</published><updated>2010-07-08T00:30:42.756+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>NTCIR-8 Patent Mining Task</title><content type='html'>ちょっと報告が遅れましたが，会議には参加してませんが，&lt;a href="http://research.nii.ac.jp/ntcir/ntcir-ws8/meeting/"&gt;NTCIR-8&lt;/a&gt;のPatent Mining Taskに，チーム西山の隊員として参加しました．タスクの内容は，特許文書中からその特許が解決したい課題や効果がかかれたフレーズを抜き出すというものです．結果的に参加チーム中で結構いい順位につけたということで，&lt;a href="http://research.nii.ac.jp/ntcir/workshop/OnlineProceedings8/NTCIR/04-NTCIR8-PATMN-NishiyamaR.pdf"&gt;論文&lt;/a&gt;も公開されています．実は私がポカしたせいで，本当はもう少し結果よかったです（後述）．&lt;br /&gt;&lt;br /&gt;正解付与済みデータが与えられるということで，CRFを使った教師あり学習の枠組みに，おのおのの得意とする特徴量をこれでもかとてんこ盛りに入れ込みました．正解データを見る限り，明らかに係り関係にある単語や文節が分類に貢献していることがわかったので，私に召集令状が係った次第です．特に特許文書は一文が長く，構文解析が難しいので，NLP2010で発表したような距離期待値のテクでロバストになることを期待しました．近いものほど大きな値にするために，純粋なホップ数ではなく，0.5のホップ数乗（1ホップ遠ざかるごとに値が半分になる）の期待値の近似値を計算します．E[0.5&lt;sup&gt;(ホップ数)&lt;/sup&gt;]です．これも，NLP2010の方法と同種の動的計画法で効率的に計算できます．この値を特徴量の値，係り先の単語を次元とするような特徴ベクトルを作ります．他にもたくさん特徴量があるんですが，割愛します．他と比べても，この特徴量はそこそこ貢献したようです．&lt;br /&gt;さて，期待値を使うのとOne-bestを使うのでどちらがよいのかという点ですが，論文でははっきりと言及してませんがかなり微差でした．一応期待値の方がよさげなんですが，微差です．有意差があるかどうか怪しい．いくつか理由はありますが，まず係り受け解析はそこそこ”簡単な”タスクだということ．8割は正解するので．それから，特徴量の値としてだけ使っているので，必ずしもすべての係り関係が正解に寄与している訳ではなさそう，という点です．このexp関数を特徴量とする設計が適切かどうかも怪しいですし．ただ，個人的には，こういう「枠組み」は必ずしも構文解析だけではなくて，たとえばもっと難しい語義曖昧性解消や照応解析などのより難しいタスクに応用できたらよいな，と思っています．&lt;br /&gt;&lt;br /&gt;あと裏話．係り受け解析の学習には京大コーパスを使っています．すると，Juman品詞体系なので，全段の形態素解析や文節切りもJuman品詞体系に合わせる必要があります．この処理にはMeCabとCabochaを使ったのですが，デフォルトはIPA品詞体系．実験するときに品詞体系はJumanを手動で指定したくせに，モデルファイルの指定を間違えた！　orzorzorz　おかげで文節単位がめちゃくちゃになっていました．論文を書く段になって例を探しているときにこの事実に気づき，あわてて実験し直したら，数ポイントスコアが上がって順位もかわりましたとさ．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-4574636243965629192?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/4574636243965629192/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/07/ntcir-8-patent-mining-task.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/4574636243965629192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/4574636243965629192'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/07/ntcir-8-patent-mining-task.html' title='NTCIR-8 Patent Mining Task'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5205863265839730315</id><published>2010-06-26T21:36:00.002+09:00</published><updated>2010-06-26T21:49:20.291+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='写真'/><title type='text'>Lightroom 3</title><content type='html'>昨日&lt;a href="http://www.adobe.com/jp/products/photoshoplightroom/"&gt;Lightroom 3&lt;/a&gt;がリリースされました．public betaが出た去年の冬に使ってたのですが，期限切れと同時に，古いバージョンで新しいファイル開けないので，え？これカタログファイルどないせいと？という悲しい状況に陥りました．βを出して，しかもファイルフォーマット変換するなら，発売までは使わせて欲しいな．&lt;br /&gt;&lt;br /&gt;さて，使ってみた印象ですが非常に良いです．2をすっ飛ばして1.4からのバージョンアップだったので，一番印象的なのはマルチディスプレイに対応したこと．2画面目の方に画像一覧を，メインディスプレイの方で現像作業をするといい感じです．性能という点以上に使い勝手というのはこういう日常的に使うソフトにはとても大事だと思います．もっともこの昨日は2のころからあります．ということで，3での差分はやはりノイズ除去が強力になったことでしょうか．1.4との比較ですが，ぱっとみでわかるくらい除去性能が上がってます．真っ暗なスポーツバーでW杯観戦したときの，ISO1600，無発光で無理やり撮った写真もきれいになりました．すごい！　ビデオに対応を謳っていますが，単に取り込めるだけで編集はできません．Lightroomとは別に，ファイルコピーする手間が省けたくらいに思っておけばいいんですかね．&lt;br /&gt;&lt;br /&gt;1系のユーザー，特にマルチディスプレーのユーザーは即刻かえるべきでしょう．2の人は，どうでしょうね．差分はそんなに大きくないかも．ノイズ除去はRAW現像処理の中でもメインの一つなので，ここをどうみるかでしょう．そんな感じ．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5205863265839730315?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5205863265839730315/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/06/lightroom-3.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5205863265839730315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5205863265839730315'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/06/lightroom-3.html' title='Lightroom 3'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-2435730140210446634</id><published>2010-06-20T21:01:00.004+09:00</published><updated>2010-06-20T21:41:25.091+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='写真'/><title type='text'>最近のミラーレス事情</title><content type='html'>最近いわゆるコンパクトデジカメと，いわゆる一眼レフデジカメの間に出てきたのが，ミラーレス一眼といわれるクラスです．中に鏡が無いので一眼レフよりも小さくできて，レンズは交換できる．やっぱり一眼レフはでかい，重い，で一般受けしないことがわかったので，人に勧めるべきなカメラは何なのか，ビックカメラに行く用があったのでいじくってきました．&lt;br /&gt;&lt;br /&gt;主にみてたのはこの3つ，とその下位機種．&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a aiotitle="NEX-5D" href="http://www.sony.jp/ichigan-e/products/NEX-5D/"&gt;Sony NEX-5D&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://panasonic.jp/dc/g2/index.html"&gt;Panasonic Lumix G2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://olympus-imaging.jp/product/dslr/ep2/index.html"&gt;Olympus PEN EP-2&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;まず，一番驚いたのはNEXが意外とよい！　理由は色々ありますが，背面液晶の解像度が異常に高いので，ピントの山を見分けられる．カメラ振った時のリフレッシュが非常に高速．これがちゃんとしてないと，動く物体は追えません．こういうのみてると，光学ファインダーにペンタプリズムなんて技術は，それこそ消えていくのかなぁとか思ってしまいます．そして，APS-Cはやはりコンパクトデジカメと違ってよくぼける．操作感はあまり評価してませんが，F値の調整は意外とやりやすかったです．あと，レンズがでかいのでまったくコンパクトじゃないですｗ　背面液晶なので，晴天時にどれだけみられるか気になります．&lt;br /&gt;次に良かったのがLumixです．電子ビューファインダー（ファインダー内に液晶を使う）の解像度が優れていて，これも応答性能が良くて，ふつうに使えそう．背面液晶でいいジャンと思われるかもしれませんが，晴天時に液晶は見えないので，外の光を遮断して確認できるファインダーは実は重要です．AF時に自動でアップになって，ピントの山も見分けやすい．これは驚いた．&lt;br /&gt;そして，残念だったのがPENでした．何がって，電子ビューファインダーの応答性能が遅すぎる・・・．動くものは追えません．どうもつかっててもしっくりきません．しかも，これつけると形がダサすぎる．デザインがいいので人には勧めてましたが，今後控えるかも．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて，全体の感想ですが，少ない事例の中で大型家電メーカーが強いなという印象を受けました．ミラーレスというと，今までの既存のカメラ技術（シャッター，ミラー，ペンタプリズム，ファインダーなど）が省略されて，新たに電子ビューファインダーなり背面液晶なり，どちらかといえばカメラメーカーが出がけてなかった新しい技術が必要になります．こういうところの作る込みは，やはりSonyとPanasonicは一歩先を行っている感がありました．特にPanasonicはミラーレスのさきがけとしていち早く商品を出して，そして自分たちに得意とする分野をうまく生かしているように思います．今後どうなるかわかりませんが，ミラーレス市場は一眼レフ市場に比べて拡大するでしょうし，その中でこうした家電メーカー系が伸びそうな気がします．これから参入するメーカーはどうするのでしょうね．どこかと提携するなり，合併するなり，新しい動きがあっても不思議じゃなさそうです．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-2435730140210446634?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/2435730140210446634/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/06/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2435730140210446634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2435730140210446634'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/06/blog-post.html' title='最近のミラーレス事情'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-8064194228350213508</id><published>2010-06-13T21:33:00.001+09:00</published><updated>2010-06-13T21:35:16.640+09:00</updated><title type='text'>iPadを買いました</title><content type='html'>iPadを買いました。一通り自分が想定していた範囲で使った感想では、70点くらいです。Webや写真周りの出来はとても良いですが、やはり懸念だっpdf周りはいまいちです。入力まわりは想像よりはずっといいですが、手足のようには使いこなせません。それから、safariに対応していないwebページも案外多くて、今書いているbloggerもそのひとつです。&lt;br /&gt;&lt;br /&gt;そもそも新しいものぎらいのunnoが何で買ったのかという点から。最初から自宅での利用を想定していました。研究周りの作業は会社のノートPCでやるようになってから、自宅のデスクトップが冗長に感じてきました。うるさいし、ソファーの方がすわっててらくです。実家にいた頃はデスクチェアしか自室になかったですし。気づくと、写真以外はほとんどwebとメールにしか使っていません。朝、ニュースや天気を確認したりするには起動も遅すぎます。最初ネットブックも考えたのですが、寝ながら使いづらいとか、あとあのタッチパッドがだめなんですね。iPadは日常用途に最適。iPod touchを大きくしただけじゃんと揶揄する人もいますが、デバイスそのものよりも、こうしたデバイスがあった時のユースケースを明確に示たのが一番の貢献だと思っています。&lt;br /&gt;&lt;br /&gt;一番素晴らしいのは写真管理です。以前より格段に解像度が増して圧倒的にきれいです。ボクの中ではネットの使えるフォトフレーム化しています。逆に、使っていて一番不便なのは入力まわりです。クリックや選択、コピペが結構絶望的。iPhoneに比べたら使いやすいという人は本質を見失ってます。iPadの対抗馬はPCやネットブックであってiPhoneではありません。とおもったが、そうじゃなくてkindleだったかw 次の不満はファイルと関連付けです。アプリケーション間の連携は最悪です。そうしたものは想定していません。そもそも、従来のPCがファイルを開く形で動いていたのが、iPadでは各アプリがファイルを管理します。そのためブラウザからpdf管理ツールを起動できません。用途を限定することで使いやすくしているので、文句は言いづらいですが、どこまで自由にするかの線引きは難しいですね。&lt;br /&gt;&lt;br /&gt;今のところ想定している拡張は、まずdropboxを使った論文管理、bluetoothスピーカ、それからファイルサーバ上の動画閲覧などが出来そう。グリモンは使えませんがブックマークレットは使えます。具体的にはブックマークレットでaタグを探してリンクを自宅サーバに貼り直し、クリックしたらサーバー側でやりたい放題処理して、dropboxに保存します。Macも持ってないですし、当面はwebアプリで凌ごうかと。dropboxをファイル管理とみなす方法は結構使えると思います。お試しあれ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-8064194228350213508?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/8064194228350213508/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/06/ipad.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8064194228350213508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8064194228350213508'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/06/ipad.html' title='iPadを買いました'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5357463061636774083</id><published>2010-06-12T00:51:00.003+09:00</published><updated>2010-06-12T01:38:12.650+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>2010年度人工知能学会全国大会</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3pMPX8vRG80/TBJld3wyNLI/AAAAAAAAASM/MofBZZ3znf8/s1600/20100610-_IGP6937.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_3pMPX8vRG80/TBJld3wyNLI/AAAAAAAAASM/MofBZZ3znf8/s320/20100610-_IGP6937.jpg" alt="" id="BLOGGER_PHOTO_ID_5481555260322493618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ai-gakkai.or.jp/jsai/conf/2010/"&gt;人工知能学会の全国大会&lt;/a&gt;に参加してきました．発表は&lt;a href="https://kaigi.org/jsai/webprogram/2010/paper-161.html"&gt;こちら&lt;/a&gt;．内容は，言語横断検索ってあるけど，同じことをテキストマイニングの文脈でやったらどうなるだろう，というような内容です．要約すると試してみたら案外うまくいったよ，なのでそれだと聞いてくれた人にあまりに申し訳ないので，「最終的なアウトプット（マイニング）のために中間で難しい問題（機械翻訳）を解く必要はないはずだ」というVapnikの原理的な説明を入れてみたり，訳語精度の割にうまく動いたもっともらしい説明を入れてみたりしたものの，時間足りなくて説明はしょってしまったり．なかなかうまくできないものです．ただ，前者の話というか哲学というかは最近よく感じていて，アプリケーションから見たとき本当に必要な自然言語処理って何なのか，という点は，特にいくつかの応用をはっきりともっている企業の研究者として，今までのNLPの枠組みから少しはずれる形で一石を投じてもいいんじゃないだろうかと思っています．言語処理学会で話した距離の期待値（曖昧構文解析とよんでいますが）も，「精度のよい解析は結構だが，それで検出漏れがでては困る」というような現実のニーズを反映させようとしています（まだアプリまでうまくつながってませんが）．企業研究者の方の発言やblogなんかを見ると，似たような視点を持っている方をよく見かけます．&lt;br /&gt;今回の発表に先立って，広報の方が&lt;a href="http://www-06.ibm.com/jp/press/2010/06/1001.html"&gt;プレスリリース&lt;/a&gt;を出してくれたりとか，なんかひえぇぇぇだったんですが，特に何もありませんでしたｗ　それから，謝辞にも書きましたがインターンに来ていた2人の学生さんと継続して行った研究だったので，2人には感謝したいですね．&lt;br /&gt;&lt;br /&gt;実は今回人工知能学会には初参加でした．そもそも会員でもないです．ごめんなさい．言語処理学会に比べて扱う分野の幅が広い広い．広告オークション，検索のランキング学習，オントロジー，twitter研究など聞きかじったことのある程度だったいくつかの問題に関して，チュートリアルがわりに聞けたのがよかったです．ロボットとかWeb系も，もう少し聞けばよかったかもしれません．&lt;br /&gt;&lt;br /&gt;例のごとく，twitter上でしか認識していなかった方にたくさん声をかけていただいたり，実際にお会いできました．twitterをやっていなかったら，本当に2,3人しか知り合いがいなかったので，コミュニケーション拡大に大変役になっているのを実感します．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;※上の写真は懇親会に行くとき貸し切りだった路面電車です．貸し切り満員電車でした&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5357463061636774083?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5357463061636774083/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/06/2010.html#comment-form' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5357463061636774083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5357463061636774083'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/06/2010.html' title='2010年度人工知能学会全国大会'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3pMPX8vRG80/TBJld3wyNLI/AAAAAAAAASM/MofBZZ3znf8/s72-c/20100610-_IGP6937.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-6366809234503900300</id><published>2010-05-26T22:59:00.002+09:00</published><updated>2010-05-26T23:00:36.632+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='写真'/><title type='text'>一眼レフデジカメのススメ</title><content type='html'>最近，ちょっといいカメラ欲しいんだけど，というような相談を受けることが増えました．整理の意味も込めて，デジタル一眼レフがコンパクトデジカメに比べてよいといわれる点を思いつく限りあげてみようと思います．&lt;br /&gt;&lt;ol&gt;&lt;li&gt;撮影素子が大きいため画質がよい&lt;/li&gt;&lt;li&gt;レンズが優れるため画質(解像度）がよい&lt;br /&gt;&lt;/li&gt;&lt;li&gt;撮影素子が大きいため被写界深度が浅い（よくぼける）&lt;/li&gt;&lt;li&gt;レンズを交換できる&lt;/li&gt;&lt;li&gt;ファインダーがついているため明るい環境下でも見やすい&lt;/li&gt;&lt;li&gt;ピントの山が見やすい&lt;/li&gt;&lt;li&gt;位相差AFのためオートフォーカスが速い&lt;/li&gt;&lt;li&gt;ボタンが多くて操作感がよい&lt;/li&gt;&lt;li&gt;電池の持ちがよい&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;一番よく聞くのは1番目の理由です．これは間違いではないです．特に夜など高感度でのノイズは雲泥の差があります．2番目の理由もしかり．しかし，画質に関してどれほどの人が気にしているのか少し疑問です．むしろ，デジタル一眼レフを使ってまず一番驚くのは3番目でしょう．ぼける．とにかくぼける．これだけで全然雰囲気が変わります．特にポートレートやもの撮りが楽しくなります．これを画質と勘違いしている人はきっと多いですが，このことと画質は別です．ボケは光学的な現象ですから．それから，ホワイトバランスのことと思っている人もいるかもしれませんが，これも別です．&lt;br /&gt;&lt;br /&gt;4番目の理由は，大きいですが実はあまりとりだたされません．理由は簡単で金がかかるからそんなに買わないよということのようです．レンズの交換は楽しいですよ．ボクは中古レンズをオススメしています．画質のためというよりは画角の違いを楽しむためという意味で．4000円で買った200mmは未だに使ってます（さすがに色々厳しいが）．今更いうまでもないですが，35mmで近づいて撮った写真と85mmで離れて撮った写真は違うものです．これは画質云々ではなくて，背景と被写体との距離の比がかわるためです．ボケのサイズや遠近感もかわります．コンパクトデジカメで一番嫌いなのはここで，画角が自分には広角過ぎに感じます．&lt;br /&gt;&lt;br /&gt;実は重要だと思っている最後の5点，けっこう軽視されてはいる気がします．最近流行のミラーレス機がこれらのポイントを押さえているかどうか疑問です．明るい環境下で液晶はほとんど何もみえなません．いつもプレビューが見えなくて苦労します．電子ビューファインダーはこの点ありですが，その次のピントの山はどうだろう．撮影素子が大きいとピント合わせはシビアになります．ちゃんとあえば楽しいですが，どこにピントがあっているのか見えなければなりません．以前の液晶ファインダーや背面液晶ではこれが全くわかりませんでした．最近は高精細液晶が使われるようになったらしいので改善されているのかも．気にしたことないよ，という人もいるかと思いますが，コンデジは素子が小さいのでほっといてもピントがあいます．デジ一にするとすぐピンぼけします．オートフォーカスは，極端な話マニュアルでも楽しめますが（笑），ふつうの人は欲しいでしょう．一眼レフには専用のセンサーがあるので速いです．最後の操作感はかなり大事だと思います．全部お任せのコンデジと違って，デジ一は色々設定します．さすがにフルマニュアルで撮らなくても，ピントや絞り，ISO，+/-補正は常にいじりますので，1ボタンでやりたいところ．それから，搭載しているRAMの容量なんかも意外と効いているように思います．というのも，以前SDカードに書き終わるまでプレビューできなくてすごくいらいらしました．そのためにK10D買ったくらいだから・・・．常に撮影しているわけではないためだと思いますが，実は電池の持ちはよいです．&lt;br /&gt;&lt;br /&gt;カメラの機種ごとの違いはどうなのかともよく聞かれますが，とりあえず最初は安めのでいいと思います．極端な話中古や型落ちでも．上位機種は確かにいいですが，古い上位機種より新しい下位機種の方が画質がよかったりするのもあります．高い方が基本性能（画質，ファインダー，シャッター速度，AF，連射，防水，耐久性など）がよくてでかくて重い．安い方が逆です．メーカーによってカラーがあるので，たとえばキヤノンやニコンは大きくて性能もよい，Pentaxは小型高級機，オリンパスやパナはより小さいカメラを目指しています．いいカメラ買うよりも，レンズ（画角）が違うと何がかわるのかとかを楽しんだ方がいいと思います．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;そんなわけで，自分のお薦めは，キヤノンのキスデジに標準と望遠くらいのレンズ買うのがいいんじゃないでしょうか，ってめちゃくちゃベタだｗ　キヤノンはやはりレンズの利があります．友人が使っていれば借りられますし，中古市場も大きいです．レンズのレンタルもあります． ただし，キスデジはファインダーが死ぬほど小さくて泣けてきます．大きいのがいやな人には，E-PL1とかがデザイン的にもいいように思います．むしろ，そういう人はフィルム＋フィルムスキャナにしましょうｗ　なぜかフィルムの一眼の方が小さいです．なんでだろう．ポケットに入れたい人，あきらめてGRとかにしましょう．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-6366809234503900300?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/6366809234503900300/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/05/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/6366809234503900300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/6366809234503900300'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/05/blog-post.html' title='一眼レフデジカメのススメ'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-844590345840915452</id><published>2010-04-29T22:15:00.004+09:00</published><updated>2010-04-29T23:15:30.418+09:00</updated><title type='text'>理系的旅行計画</title><content type='html'>明日からGWを利用して沖縄に旅行に行きます．私がサークルで毎月どこかに行ってたのも，もう8年くらい前のこと．沖縄に行くのもB2の春以来なので6年ぶりですね．当時と今ではインターネット界隈もずいぶん様変わりしていて，最近は旅程を組むのにそこいらのフリーのツールを活用しています．ちょっとその辺の紹介．&lt;br /&gt;&lt;br /&gt;基本は&lt;a href="http://sites.google.com/"&gt;Googleサイト&lt;/a&gt;です．Wikiサービスです．タグでかけなきゃいやだー，と思ってましたが，ちょこっと書くだけならこれでもいいかな．そのまましおりになります．もともと，プロジェクトページなどを想定しているのか（サンプルがそうなっている），TODO管理とかも簡単にできます．何人かで仕事を分担すると忘れがちになるんで，まとめておきます．それから，自社サービスを埋め込めるので，たとえばMapsを埋め込んで泊まるところを書いておいたり，Picasaで写真共有とかもできます．自転車乗りとしては，&lt;a href="http://latlonglab.yahoo.co.jp/"&gt;ルートラボ&lt;/a&gt;とか埋め込めるといいんですけど．&lt;br /&gt;&lt;br /&gt;お金の管理は&lt;a href="http://docs.google.com/"&gt;Google docs&lt;/a&gt;のspreadsheetを使いましょう．Excelです．足し算引き算はこれで十分．航空券や宿の予約は立て替え払いが発生しやすいので，ここに書いてもらって精算すればOK.&lt;br /&gt;&lt;br /&gt;連絡は&lt;a href="http://www.skype.com/"&gt;Skype&lt;/a&gt;が便利ですね．これは，けっこう前からあったかな．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以前は大学に行けばその場でどうこうできましたが，今はこの手のツールを駆使すると大変便利です．会社のスキーや同期旅行なんかでも活躍．昔は自分でwiki置いたりしてましたが，もうそういうのも古くさく感じるようになりました．時代もかわったものです．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-844590345840915452?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/844590345840915452/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/04/blog-post_29.html#comment-form' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/844590345840915452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/844590345840915452'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/04/blog-post_29.html' title='理系的旅行計画'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5945378930793938578</id><published>2010-04-11T17:00:00.002+09:00</published><updated>2010-04-11T17:19:39.388+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><title type='text'>英文を書くときに参照したいサイト</title><content type='html'>辞書サイト．&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.alc.co.jp/"&gt;英辞郎 on the WEB by ALC&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ejje.weblio.jp/"&gt;weblio 英和・和英辞典&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://langrid.org/playground/index.html"&gt;Language Grid Playground&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ldoceonline.com/"&gt;Longman English Dictionary Online&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.oup.com/elt/catalogue/teachersites/oald7/"&gt;Oxford Advanced Learner's Dictionary&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;その他．&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://native-checker.com/"&gt;英文校正サイト Native Checker&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://erek.ta2o.net/"&gt;英文例文検索 EReK&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://corpus.leeds.ac.uk/internet.html"&gt;Leeds collection of Internet corpora&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wsu.edu/%7Ebrians/errors/errors.html"&gt;Common Errors in English Usage&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;あとで追加する．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5945378930793938578?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5945378930793938578/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/04/blog-post_11.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5945378930793938578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5945378930793938578'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/04/blog-post_11.html' title='英文を書くときに参照したいサイト'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-331886163711774678</id><published>2010-04-03T01:07:00.012+09:00</published><updated>2010-04-03T03:01:30.644+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>人知への挑戦</title><content type='html'>去る4月2日，こんなセンセーショナルなニュースがtwitter上で，Webニュース上で飛び交いまいた．&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ipsj.or.jp/03somu/shogi/index.html"&gt;情報処理学会が日本将棋連盟に「コンピュータ将棋」で挑戦状&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ついに将棋もここまで来たか，という気分です．私が学部生のころきいたときは，アマチュアとならいけるが，まだプロとは，というくらいのことをいっていたように記憶していますから，この数年でここまで伸びたのかと思うとすごい．単にそれはマシンパワーが増大しただけではなくて，新しいアルゴリズムの開発や，それ以上に地味な工夫の繰り返しだったんではないかと推測します．いくら「解」の存在するゲームとはいえ，それは指数関数の先の遙か遠くにある解．単なる物量で近づける距離ではないはず．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;人間へ挑戦の先駆者といえば，IBMの&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%BB%E3%83%96%E3%83%AB%E3%83%BC"&gt;ディープ・ブルー&lt;/a&gt;ですよね．もちろん（？），IBMも黙っていません．&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.research.ibm.com/deepqa/"&gt;IBM - Research: Jeopardy!&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/news/2010/021010-ibm-jeopardy-game.html"&gt;IBM's Jeopardy-playing machine can now beat human contestants&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ジョパディーというのは，アメリカで放映されているご長寿クイズ番組だそうです．IBMの研究所はこれにたいしてコンピュータで立ち向かいます．自然言語処理用語でいえば，質問応答です．この問題はチェスで人間を負かすことよりも遙かに「コンピュータにとって」難しいことです．質問応答の研究は，それこそ古くからあったわけですが，大きな成果につながったというような話はあまり聞きません．有名どころだと，&lt;a href="http://www.powerset.com/"&gt;Powerset&lt;/a&gt;でしょうか．しかし，リリースされたときの周囲の反応は案外冷ややかでした．国内だとgooラボで自然言語検索というサービスが一時ありました．いつしか公開を辞めてしまいましたね．&lt;br /&gt;&lt;br /&gt;私は自然言語処理の究極的な目標をあげろと聞かれたら，機械翻訳とこの質問応答だと答えることにしています．質問応答は情報検索のその先にあります．それは単にデータの収集と検索にとどまらず，質問を理解し，文書を探し，推論し，答えを見つけ，適切に答える必要があります．私の知る限りこれらの一連の要求に対して有効な手法が確立されていません．そのため，この挑戦は非常にチャレンジング，というか無謀ともいえます．&lt;br /&gt;&lt;br /&gt;私はかねてよりこうした挑戦を期待していました．自然言語処理をはじめとする応用よりの研究は，理論と現実とのギャップが大きいように感じます．私は大学院のときに検索をやっていたのですが，そのとき感じた印象は，一つのシンプルなモデルでは解けず，小さな些末な問題が山のようにあり，それを一つ一つつぶしていかないと全体の問題は解けない，ということでした．その中で自分の提案する方法がどれくらい貢献できるかというと，それは非常に小さく，こうした応用の研究は大人数の総力戦で挑まねばならないと痛感したものです．&lt;br /&gt;そのため，大きな研究グループが，本気で未解決の応用に取り組んだらどうなるか？　これは非常に興味があります．こうした挑戦はそれなりの覚悟と投資が必要です．今，人間のエキスパートレベルの質問応答が実現できるかときかれたら，NOと答えるでしょう．まだ，そういう段階ではないのです．でも，本気で，それも特定のジョパディーというタスクに特化したら，ひょっとして・・・．実際のテレビ放映での対戦でコンピュータが人間に勝てるのか，非常に注目すべき挑戦だと思います．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-331886163711774678?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/331886163711774678/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/04/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/331886163711774678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/331886163711774678'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/04/blog-post.html' title='人知への挑戦'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-3068063219624370653</id><published>2010-03-15T00:17:00.001+09:00</published><updated>2010-03-15T00:18:54.513+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>言語処理学会年次大会2010</title><content type='html'>&lt;a href="http://nlp2010.anlp.jp/"&gt;言語処理学会年次大会&lt;/a&gt;，通称NLP2010に参加してきました．グループで聴講セッションの分担もあったのですが，私はなるべく普段聞かないような研究を聞きに行ったので，大変おもしろかったです．新しい問題意識ができたり，興味有る文献へのポインタもわかったり，収穫も多かったです．全体の感想としては，実に多様なアプリケーション，問題設定があるなという点で感心しました．自分は想像力が足りないのか，そういう新しい問題設定が苦手です．ただ逆に問題が多様化しすぎて，地味な基盤的研究が減った印象があります（単に聞かなかっただけかも）．学生さんには人気なさそうですが．&lt;br /&gt;twitter上でしか知らなかった方にたくさんお会いしました．コミュニケーション生成に確実に役立っているようです．挨拶と同時に「アカウント知ってます」や「ブログ読んでます」といろんな方にいわれましたｗ　実力以上に知名度だけ先走りしてしまったようです．学生の内からtwitterなりブログなりで名前を売っておくと，話しかけorかけられやすくなるかもしれませんよ．&lt;br /&gt;&lt;br /&gt;私の発表は初日の朝9:00からのセッション．時間オーバーしました．すいません．さっそく，&lt;a href="http://d.hatena.ne.jp/mamoruk/20100309/p1"&gt;@mamorukさんに紹介いただきました&lt;/a&gt;．ありがとうございます．あまり質問が飛ばなかったのは，やはりわかりにくかったのかもしれません．ここで補足させていただくと，指数個候補が存在する分布における関数の期待値を，関数に制約をかけること（係り受け木上の最短路の重み付き距離），候補に制約をかけること（後方係り受け限定），分布を近似することで（同時確率を周辺確率の積で近似）多項式時間で計算できるようにしました，というのが技術的に面白いところです．周辺確率を計算するのに動的計画法を使って，距離の期待値を計算するのにもう一度動的計画法を使います．ちなみに，直接私の成果ではありませんが構文解析技術は弊社製品にすでに使われているというのもあって，こうしたモチベーションが生まれています．応用よりの具体的な問題意識というのは，アカデミックよりも私のような企業の研究者が学会に持ち込まないといけないなぁと最近思ってます．&lt;br /&gt;発表のうまい人のを聞いて思ったのは，大事な部分は3回くらい言うしつこさが大事に思いました．イントロで1回，説明に1回，まとめで1回，くらいで．「まず例を出せ」，というやり方もありますね．そのほうがよかったかも．@hillbigさんが，やはりとても発表慣れしているというのと，発表の組み立てがうまいと感じました．簡単な内容ではないはずなのに，技術のコアの説明は誰よりもわかりやすくて，それ以外は大胆にカットして大事な部分だけ印象づけさせているように感じました．参考にしたい．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-3068063219624370653?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/3068063219624370653/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/03/2010.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3068063219624370653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3068063219624370653'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/03/2010.html' title='言語処理学会年次大会2010'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5153274008607036107</id><published>2010-03-08T00:48:00.003+09:00</published><updated>2010-03-08T01:03:20.203+09:00</updated><title type='text'>10年越しの成果</title><content type='html'>友人に誘われて，演奏会を聴きに行きました．演奏も素晴らしかったのですが，驚いたことにこの楽団の団長さん，10年前に今回演奏した曲を演奏したいという目標で設立し，そして10年越しでその目標を達成したとのこと．しかもそれが音大に入りたての18の頃の目標！　私，もう自然言語処理を始めて4年経ちますが，あと6年でそういう壮大な，壮大でなくても一つの筋の通った目標をやり通せるか．ここ数ヶ月は原点に返るというか，修士の時の目標意識を取り戻している気はします．ひとまずは来週の発表ですね．意識を高める，という意味でもよい週末でした．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5153274008607036107?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5153274008607036107/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/03/10.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5153274008607036107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5153274008607036107'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/03/10.html' title='10年越しの成果'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-7452494945073840901</id><published>2010-03-05T00:33:00.001+09:00</published><updated>2010-03-05T00:34:13.738+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><title type='text'>IME戦国時代</title><content type='html'>先月途中まで書いてたのが今更になってしまいました．&lt;br /&gt;&lt;br /&gt;昨年末，Googleが日本語入力システムを出したのを皮切りに，Baiduも日本語入力を投入したニュースを聞いて久しい．&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/ime/"&gt;Google日本語入力&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.itmedia.co.jp/news/articles/0912/07/news099.html"&gt;「Google日本語入力」開発者が語る、その狙い&lt;/a&gt;&lt;br /&gt;&lt;a href="http://type.baidu.jp/"&gt;Baidu Type - 日本語入力システム&lt;/a&gt;&lt;br /&gt;&lt;a href="http://internet.watch.impress.co.jp/docs/news/20091216_336306.html"&gt;バイドゥ、日本語入力ソフト「Baidu Type」を公開&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;日本語入力システムといえば，それこそ初期の自然言語処理の花形，そして自然言語処理が最も成功したアプリケーションの代表格です．しかし，それは詰まるところよい意味で枯れた技術．それがここに来て検索2社から立て続けにリリースされたというのは，なぜ今更？という意味で新鮮でした．加えてこれらがフリーで提供されていることが，すでに商品として，お金をいただいて提供するソフトウェアではないほどに成熟したことを表しているように感じられます．&lt;br /&gt;もちろんお家芸のジャストシステムも黙って見ているわけではないようで，早速（？）新商品で打って出ています．加えて，社内の用語統一などの機能を盛り込んだ法人向けATOKも新登場．もう「枯れた」と思っていた分野に，こうも新しいフレーバーが盛り込まれるとは．これも競争にさらされた上での進化なんでしょうかね．&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pc.watch.impress.co.jp/docs/news/20091208_334132.html"&gt;ジャストシステム、一太郎2010やATOK 2010を発表&lt;/a&gt;&lt;br /&gt;&lt;a href="http://japan.cnet.com/news/ent/story/0,2000056022,20408763,00.htm"&gt;ジャストシステム、法人向けに本気の「ATOK」を新発売--コンシューマーイメージを払拭へ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;私は今まで日本語入力に関してノータッチだったのですが，実は研究として続けている方が予想以上にいることを最近知りました．@mamorukさんや@tkngさんの&lt;a href="http://cl.naist.jp/~mamoru-k/chaime/"&gt;ChaIME&lt;/a&gt;や，@nokunoさんの&lt;a href="http://www.social-ime.com/"&gt;SocialIME&lt;/a&gt;．あと，京都の森先生の&lt;a href="http://plata.ar.media.kyoto-u.ac.jp/mori/research/topics/KKC/"&gt;KAGAMI&lt;/a&gt;とかがあるらしい．やはり，その他の自然言語処理と同じく，今までのルールベースから統計手法にシフトしているようです．私はフルチューンしたルールベースに統計手法は勝てない，なのでATOKが一番！と思っていたのですが知らない間に&lt;a href="http://www.justsystems.com/jp/products/atok/feature1.html"&gt;ATOKも統計にシフト&lt;/a&gt;したみたいですね．&lt;br /&gt;それほど不自由に思うことも少ないこのご時世，よくもまぁこんなにたくさんあるんだと感心します．最もユーザーに近いインターフェースの部分を担うだけに，少しの不自由の改善も大きな効果が期待できるんでしょうね．それこそ，構文解析の1%を改善するより大事かもしれませんｗ　コンピュータで一番大事なのは，CPUではなくてキーボード，マウス，ディスプレイをモットーとするインターフェース最重要論者の私としても，なんかしたいなぁと思うところ．これからどういう方向に発展していくのか期待しながら見ていくことにします．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-7452494945073840901?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/7452494945073840901/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/02/ime.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/7452494945073840901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/7452494945073840901'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/02/ime.html' title='IME戦国時代'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-3638361580245601441</id><published>2010-02-18T00:55:00.002+09:00</published><updated>2010-02-19T00:46:59.632+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><title type='text'>L1-SGD</title><content type='html'>&lt;a href="http://aclweb.org/anthology/P/P09/P09-1054.pdf"&gt;&lt;span style="font-weight: bold;"&gt;Stochastic Gradient Descent Training for L1-regularized Log-linear Models with Cumulative Penalty&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Yoshimasa Tsuruoka, Jun’ichi Tsujii and Sophia Ananiadou, ACL2009.&lt;br /&gt;&lt;br /&gt;論文紹介．鶴岡さんのL1正則化付き確率的勾配降下法（Stochastic Gradient Descent，SGD）．L1正則化はコンパクトなモデルパラメタになってくれるので，実用上はとてもうれしい．しかし，0の点で微分できないので面倒だった．提案手法は実装が超簡単（擬似コードで20行くらい），超高速で，収束も早いし，性能もいい，いいこと尽くめ．初めての人にもお勧めできる簡単さで，しかもそのまま実用品になります．&lt;br /&gt;&lt;br /&gt;L1正則化は目的関数に重みベクトルのL1 normをたした，f(w)+C|w|を最小化しましょうというはなし．L2と違って，0の付近で最小になりやすいので，ほとんどのパラメタが0になって学習結果がコンパクトになりやすいため，実用上重要です．&lt;br /&gt;ところが，この性質，つまり|w|は0の付近でとがっていることが最適化の上では問題．このまま計算すると，0を境にして振動するだけで，なかなか0に近づいてくれません．そこで，更新時に符号が変わるときは（0を飛び越えるときは）一度wの値を0にしてしまいます．これがclipping（で，これがFOLOS）．&lt;br /&gt;しかし，ここまでやってもまだ真の最適解のスパース性に及びません．この原因はオンラインアルゴリズム特有の，最後にやってきたデータに強く引っ張られすぎるという問題のせいです．パラメタは対応する素性を含む学習データが出現すると，勾配が大きいので0から抜け出して，その後L1のペナルティだけがかさんでまた0に戻ります．この途中過程で打ち切られてしまうため，疎な解になりにくいのです（figure 1，下の追記参照）．ということは，L1のペナルティをためておいて，その素性を含む学習データがきたときに，ためておいたペナルティと，学習データによる抜け出す力（勾配）で力比べをして，ペナルティが勝ったらやっぱり0だった，学習データが勝ったら0から抜け出せばよさそう．これがcumulative．ため込んだペナルティと比較するので簡単には0から抜けません．ここで特に実用上大事なのは，L1のペナルティの絶対値はパラメタの現在の値に依存しないため，反復ごとに全体で1回足し算するだけ（これがu）．&lt;br /&gt;実装は非常に簡単です．しかも，式見てわかるとおり各更新は素性の非ゼロ要素だけでよいので，ものすごく速いです．&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;追記（2010/2/19）&lt;/span&gt;&lt;br /&gt;twitter上で，@tkngさんと@uchumikさんにFOLOS（@slaさんによると，最近FOBOSに改名したらしい．改名って・・・）との違いを教えていただきました．多謝！&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://books.nips.cc/papers/files/nips22/NIPS2009_0248.pdf"&gt;Efficient Learning using Forward-Backward Splitting&lt;/a&gt;&lt;br /&gt;John Duchi and Yoram Singer, NIPS2009.&lt;br /&gt;&lt;br /&gt;5章にlazy updateについて書かれています．これは，鶴岡さんの論文でも言及されています．上の私の説明で，一度0から抜け出してから0に戻る途中で打ち切られるのが原因と書きましたが，これはちょっと間違い．lazy updateを使えばこの問題はなくなりますが，やはりcumulativeほど疎な解になりません．&lt;br /&gt;一見lazy updateとcumulativeは同じに見えますが実は違います．lazy updateは&lt;span style="font-weight: bold;"&gt;前回の更新から，次の更新まで&lt;/span&gt;の間のペナルティを一気にかけます．つまり，長いこと勾配が0で，次に立て続けに勾配が非0だと0から抜け出せます．一方で，cumulativeは&lt;span style="font-weight: bold;"&gt;最初から現在までのペナルティの総和&lt;/span&gt;を持っているので，勾配の総和がこれを超えてくれないと抜け出せません．なので，長いこと勾配が0だと，そのあと立て続けに勾配が非0でも，その間のペナルティがかさんでいるのでやっぱり0から抜けられません．&lt;br /&gt;給料日（勾配が非0）のたびに取立て（L1ペナルティ）に来ますが，FOBOSは前回の取立て日からの日数分だけ，cumulativeは過去までさかのぼって今までのツケを要求します．人生後半で（学習の後半で）再就職すると（非0が続くと），FOBOSなら貯蓄ができますが（0から抜ける），cumulativeは今までのツケの返済に回されてやはり所持金0です．気に入ったんですが，別にわかりやすくないなw&lt;br /&gt;&lt;br /&gt;さて，どっちがいいのかという話ですが，FOBOSは後半の出現に強く依存する点で，cumulativeの方がいいのかなという気がしました．バッチの場合は全データの勾配を足して，ペナルティも足すわけですから，出現順に依存してペナルティの総和の変わるFOBOSよりcumulativeの方が近いのかな，という直感．理論的な考察とかもありそうですね．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-3638361580245601441?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/3638361580245601441/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/02/l1-sgd.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3638361580245601441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3638361580245601441'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/02/l1-sgd.html' title='L1-SGD'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-181654700840879729</id><published>2010-02-10T23:25:00.003+09:00</published><updated>2010-02-11T00:02:04.950+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='本'/><title type='text'>異分子への耐性</title><content type='html'>&lt;table class="g-tools_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;span class="g-tools_img"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4121015274/unnonouno-22/" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/411GB5S6X2L._SL160_.jpg" alt="金融工学の挑戦―テクノコマース化するビジネス (中公新書)" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;span class="g-tools_body"&gt;&lt;a href="http://www.amazon.co.jp/%E9%87%91%E8%9E%8D%E5%B7%A5%E5%AD%A6%E3%81%AE%E6%8C%91%E6%88%A6%E2%80%95%E3%83%86%E3%82%AF%E3%83%8E%E3%82%B3%E3%83%9E%E3%83%BC%E3%82%B9%E5%8C%96%E3%81%99%E3%82%8B%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9-%E4%B8%AD%E5%85%AC%E6%96%B0%E6%9B%B8-%E4%BB%8A%E9%87%8E-%E6%B5%A9/dp/4121015274%3FSubscriptionId%3D15SMZCTB9V8NGR2TW082%26tag%3Dunnonouno-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4121015274" target="_blank"&gt;金融工学の挑戦―テクノコマース化するビジネス (中公新書)&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=unnonouno-22&amp;amp;l=ur2&amp;amp;o=9" alt="" border="0" height="1" width="1" /&gt;&lt;br /&gt;&lt;br /&gt;中央公論新社  2000-04&lt;br /&gt;売り上げランキング : 114939&lt;br /&gt;おすすめ平均  &lt;img src="http://g-images.amazon.com/images/G/01/detail/stars-4-0.gif" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/%E9%87%91%E8%9E%8D%E5%B7%A5%E5%AD%A6%E3%81%AE%E6%8C%91%E6%88%A6%E2%80%95%E3%83%86%E3%82%AF%E3%83%8E%E3%82%B3%E3%83%9E%E3%83%BC%E3%82%B9%E5%8C%96%E3%81%99%E3%82%8B%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9-%E4%B8%AD%E5%85%AC%E6%96%B0%E6%9B%B8-%E4%BB%8A%E9%87%8E-%E6%B5%A9/dp/4121015274%3FSubscriptionId%3D15SMZCTB9V8NGR2TW082%26tag%3Dunnonouno-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4121015274" target="_blank"&gt;Amazonで詳しく見る&lt;/a&gt;&lt;/span&gt; &lt;span class="g-tools_by"&gt;by &lt;a href="http://www.goodpic.com/mt/aws/index.html"&gt;G-Tools&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;新書を久しぶりに読みました．私は金融工学はまったくの素人なんですが，初学者にも読めるように色々配慮されているように感じました．難しい数式は話半分にしか理解できませんでしたが・・・．&lt;br /&gt;さて，私がこの手の専門領域の方がかかれる新書に期待することは，半分は今書いたような専門分野の入り口の記述で，もう半分がその業界の歴史といいますか，背景といいますか，ノンフィクション的な話です．著者の今野先生は，金融工学という学問が興る，まさにその瞬間を体験した方のようで，「経済学」という学問にいかにして「工学」という異分子が入り込んでいったかのドキュメンタリーが非常におもしろかったです．特に，こうした数式バリバリの手法が経験主義的な既存の経済学にいかに受け入れられなかったか，そしてにもかかわらずいかにインパクトを与えたかという話は非常に興味深い．&lt;br /&gt;これを読んで思うのは，twitterで話題になったことですが，NLPに統計的手法が入り込んできたときに，既存の言語学の先生方がこぞって言語処理学会から消えていったというエピソードです．数学とか統計とか，とかく理工系の学問を新たに体得するというのはかなり大きな障壁があるのは事実ですが，たとえば共同研究するとかやり方は色々あったのではないかと思います．逆に我々も，統計や機械学習だけに固執してしまってはいけなくて，方々に知識の裾野を広げていかないとと常に思います．大学の特に大御所といわれる先生が必ずしも新しいものにnegativeという訳ではなくて，たとえば私の指導教官の先生は話を聞くだけで新しい手法の利点・欠点・特徴，あらゆるものを一瞬で理解してしまう方でした．知識は誰よりも広く，深くはないはずなのに要点は全部押さえているという．マネジメントの能力というのはこういうことを指すのかな，と漠然と思ったものです．&lt;br /&gt;今の職場は，NLPはもとより，言語学から数学から物理から機械学習まで，ドンだけ幅あんねんといういろんなバックグラウンドの方のいる謎グループにいるので，こうした知識をうまく活用したいなぁと日頃から思っている次第．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-181654700840879729?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/181654700840879729/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/02/blog-post_10.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/181654700840879729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/181654700840879729'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/02/blog-post_10.html' title='異分子への耐性'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-8535342886736213345</id><published>2010-02-06T21:54:00.005+09:00</published><updated>2010-02-06T22:04:13.217+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><title type='text'>TeXを書くときに便利なサイト</title><content type='html'>twitterなどで見つけたTeX書くときにぜひ参照したいサイトへのリンク集&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://detexify.kirelabs.org/classify.html"&gt;Detexify&lt;sup&gt;2&lt;/sup&gt; - LaTeX symbol classifier&lt;/a&gt;&lt;br /&gt;文字認識してTeXのシンボルを検索してくれる．すごい便利&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.co.jp/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=4&amp;amp;ved=0CBEQFjAD&amp;amp;url=http%3A%2F%2Fwww.ctan.org%2Ftex-archive%2Finfo%2Fsymbols%2Fcomprehensive%2Fsymbols-letter.pdf&amp;amp;ei=E2dtS__rL4zq7AOUt4TzBQ&amp;amp;usg=AFQjCNGfi5XSZ4iagbJKMAhgdxjQwwFO7Q&amp;amp;sig2=SJRpynwk53aphR_WhaVYbg" class="l" onmousedown="return rwt(this,'','','res','4','AFQjCNGfi5XSZ4iagbJKMAhgdxjQwwFO7Q','&amp;amp;sig2=SJRpynwk53aphR_WhaVYbg','0CBEQFjAD')"&gt;The Comprehensive LaTeX Symbol List&lt;/a&gt;&lt;br /&gt;TeXのコマンドがただただ大量に載ってる．4MB近いPDF&lt;/li&gt;&lt;li&gt;&lt;a href="http://hooktail.org/computer/index.php?TeX"&gt;物理のかぎしっぽ&lt;/a&gt;&lt;br /&gt;いつも見てたサイト&lt;/li&gt;&lt;li&gt;&lt;a href="http://www002.upp.so-net.ne.jp/latex/"&gt;LaTeXコマンドシート一覧&lt;/a&gt;&lt;br /&gt;いつも見てたサイトその2&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;あとで追加する．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-8535342886736213345?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/8535342886736213345/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/02/tex.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8535342886736213345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8535342886736213345'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/02/tex.html' title='TeXを書くときに便利なサイト'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-3818324748693785933</id><published>2010-02-06T19:32:00.004+09:00</published><updated>2010-02-06T19:34:01.134+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>構文解析が何に役立つのか</title><content type='html'>思いがけずたくさんブックマークしていただいたので，この機会になんで構文解析なんかやるのかというお話を書こうと思います．おそらく，NLP界隈の人には何をいまさらと思われるかもしれませんが，それが本当に役立つかというとなかなか一筋縄では行きません．今回興味を持たれた方の多くはNLP分野外の方なんじゃないかな，と勝手に考えてますのでそのつもりで書きます．&lt;br /&gt;&lt;br /&gt;構文解析というのは，文の構造を判別する処理のことで，NLP的には単語分割，品詞タグ付け（いわゆる形態素解析）のあとにくる処理です．ソフトウェアで言えばCabochaやKNPがこれにあたります．ここに&lt;a href="http://www-tsujii.is.s.u-tokyo.ac.jp/enshu3/dependency.html"&gt;大変わかり易いチュートリアル&lt;/a&gt;がありますｗ　例えば「値段の高いワイン」が，「値段のワイン」ではなくて，「値段の高い」「高いワイン」であることを認識する技術，と理解していただければ良いと思います．このように，文節間の係り関係を解析することを，係り受け解析（dependency parsing）といいます．これとは別に，phrase structure parsingもあるのですが，ここでは置いときます．&lt;br /&gt;では，文の構造がわかると何が嬉しいのか．案外これが自明ではないです．非NLP屋さんでも，Webテキストをクロールして単語分割してBoWでTf/IDF重みのベクトルにして，やれ類似度，やれ検索というようなことをしている友人はたくさんいるのですが，なかなか構文解析まで使っている人はいないようです．私の感触では「検索」という文脈は構文解析とあまり相性がよくないようです．なぜかというと，Web検索するとき，ふつう単語を入れますよね？　クエリが単語の時点で構文情報を使いようがないのです．&lt;br /&gt;じゃぁ，いらんやん・・・，とはなりません．NLPの応用は単純な単語検索，類似文書検索だけではないのですね．たとえば，「エンジン」「故障」みたいな単語間の関係を取り出したいとします．単純な単語共起で調べると，「エンジンをかけたらエアコンが故障した」のように，それエアコンですから！というのが取れてしまってげんなりします．しかし，構文木上では，「エンジン→かける」「エアコン→故障」なので，故障したのがエンジンでないことは自明です．これは情報抽出と呼ばれる処理の一種ですね．もっとも，話はそんなに単純ではなくて，「故障したエンジン」みたいに修飾関係が逆になっていたり，「エンジンの調子が悪いと思ったら，故障した」みたいに遠くの係り関係から推論しないといけない例もあったり，一筋縄ではいきません．ここが情報抽出の難しくも面白いところではあるんですが．&lt;br /&gt;ここまではNLPの話で，最後に抽出された関係を集約してデータマイニング的な処理にかけて関係の出現の偏りを見ます．すると，どの製品にどんな不具合がわかったりといった応用ができます．仕事でやっているので先輩のデモを見て知っているのですが，本当にいろいろ見つかるようでなかなか面白いです．ここまでの生テキストから知見を得るまでを総じてテキストマイニングと呼ばれ，すでに商品が市場に出回っています．しかし，B2Bなので一般の人の目には触れられないようですね．実際は，これに加えてスケーラビリティが特に問題になるので，データ構造やインデクシングが重要になります．&lt;br /&gt;&lt;br /&gt;これはあくまで一例で，自然文検索など単語間の関係に着目して検索するアプリケーションもあります．もちろん，もっと高度な機械翻訳や質問応答の前処理としても使われますが，構文情報（＋情報抽出）のみからでもいろいろ応用が考えられるよ，というはなしでした．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-3818324748693785933?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/3818324748693785933/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/02/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3818324748693785933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3818324748693785933'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/02/blog-post.html' title='構文解析が何に役立つのか'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-8286062092101960059</id><published>2010-02-01T01:44:00.004+09:00</published><updated>2010-02-06T19:33:42.085+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='NLP'/><title type='text'>構文解析と情報科学</title><content type='html'>そろそろ論文紹介記事を書いてみます．&lt;br /&gt;NLP2010のプログラムにもあるとおり，しばらく係り受け構文解析周りをやっていました（います）．私の出身研究室では構文解析をやっている人がたくさんいたのですが，最近その面白さがなんとなくわかってきました．いや，一応私も2年間日本語係り受け解析の演習担当やってたよ！　構文解析のおもしろさというのは，言語学，機械学習，プログラミング，情報科学が非常にバランスよくミックスされた問題で，いろんな定式化の仕方や，いろんな技術が，いろいろな組み合わせで，かつわりとキレイな形で程々の難しさに仕上がっているあたりにあると思います．今日は，特に情報科学的教養が大事でしたという話を3つ．&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-weight: bold;" href="http://acl.ldc.upenn.edu/H/H05/H05-1066.pdf"&gt;Non-Projective Dependency Parsing using Spanning Tree Algorithms&lt;/a&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;Ryan McDonald, Fernando Pereira,  Kiril Ribarov  and  Jan Hajic, HLT-EMNLP 2005.&lt;br /&gt;&lt;br /&gt;Ryan McDonaldのMSTパーザーの論文．これまで，projective（非交差）のdependency parsingが主流だったところに，突如現れたグラフ理論を使った構文解析．「突如」だったかどうかは，当時の実情を知りませんが．構文解析というのは出力候補が入力長に対して指数爆発する問題であるため，全部列挙して比較することができません．そこで部分問題を順次解いて局所的な最適解をとるか，強い独立性を仮定した緩いモデルの上で大域最適解をとるかという選択があります．今まで後者の手法として動的計画法を使った，CKY風の解法（Eisnerとか）が主流でした．ところが，単語を頂点，係り関係を枝とする木を構築する問題だと思うと，これってmaximum spanning treeの構築だよね，ということに気づいたわけです．しかも，この問題はCKYのO(n^3)ではなくてO(n^2)でとけるというから，性能的にも優れます．&lt;br /&gt;これを最初に聞いたとき，すげー，頭いい！と思いました．構文解析といえば動的計画法という固定観念がやはり私の中にもあったようですね．&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://aclweb.org/anthology/D/D07/D07-1014.pdf" class="yC10"&gt;Probabilistic Models of Nonprojective Dependency Trees&lt;/a&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;David A.  Smith and Noah A. Smith, EMNLP2007.&lt;br /&gt;&lt;br /&gt;オリジナルのMSTパーザーは学習はMIRAで行っている．つまり，ちゃんと勾配を求めずに学習します．CRF同様，この種の線形対数モデルは勾配を計算するときに分配関数が効率的に計算できる必要があります．CKYでは，この計算はinside-outsideで求めることができます．これは，HMMのforward-backwardをCRFのforward-backwardに拡張するのと同じ．&lt;br /&gt;さて，肝心のMSTではこの計算が無理なんだろうと思っていました．しかし，実はこれは&lt;a href="http://en.wikipedia.org/wiki/Kirchhoff%27s_theorem"&gt;行列木定理&lt;/a&gt;（Matrix tree theorem）を使うと計算できるよ，ということに「気づいた」のがこの論文．行列木定理というのは全域木の総数を計算する手法を示した定理です．これを重み付きに拡張すると，分配関数の計算そのものになります．ここまで聞くと，行列木定理を使うのは至極当たり前な話なのですが，そもそも私これ読むまで行列木定理なんてしりませんでした．実情はしらないんですが，当時もみんな気づかなかったんじゃないでしょうか？　Ryan McDonaldがMSTパーザーを発表してから，実に2年間も誰も「気づかなかった」．そう思うと，すごくどきっとしませんか．&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-weight: bold;" href="http://www.aclweb.org/anthology/P/P09/P09-1039.pdf"&gt;Concise Integer Linear Programming Formulations for Dependency Parsing&lt;/a&gt;&lt;br /&gt;Andr´e F. T. Martins, Noah A. Smith and Eric P. Xing. ACL 2009.&lt;br /&gt;&lt;br /&gt;かわって，今度は整数線形計画法（ILP）でdependency parsingした論文．ILPというのは，解が整数，制約式と目的関数が線形な最適化問題．各単語の係り先を変数におきます．上述したMSTパーザーでいうところのMaximum spanning treeのスコアは枝の重みの総和なので，これが目的関数．これは当然線形式でかける（書けそう）．あとは，ちゃんと木になっていることをうまいこと線形式で書き表せればよくて，これがちゃんと出来るよということが書かれています．大事なのは，この線形式の総数が文長に対して多項式サイズで済むことを示しています（今まであったILPの手法は指数サイズになった）．ILPはNP困難ですが，多項式時間で近似解を求める方法が知られているので，全体で多項式時間だぜ！というはなし．けっこうめちゃくちゃですが，筋は通ってます．うん．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;いずれの方法も，既存の手法を，別の情報科学的テクニックで切り抜けた論文というくくりでした．応用分野であるNLPは，他分野のテクニックが押し寄せてくることがよくあります．こういうときに勝つのは，やっぱりいろいろな基礎体力を持っている人なんだなぁ，と思った次第．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-8286062092101960059?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/8286062092101960059/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/01/nlp20102-non-projective-dependency.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8286062092101960059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8286062092101960059'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/01/nlp20102-non-projective-dependency.html' title='構文解析と情報科学'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-3006833697904356247</id><published>2010-01-27T00:49:00.004+09:00</published><updated>2010-01-27T01:06:10.606+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='写真'/><title type='text'>理系のためのデジカメ講座</title><content type='html'>最近こんな本を読みました．&lt;br /&gt;&lt;br /&gt;&lt;table  class="g-tools_table"&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;span class="g-tools_img"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774135267/unnonouno-22/" target="_top"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51yoY6ky16L._SL160_.jpg"  alt="デジタル一眼レフがわかる (Fist Book)" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;span class="g-tools_body"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774135267/unnonouno-22/" target="_top"&gt;デジタル一眼レフがわかる (Fist Book)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;技術評論社  2008-07-11&lt;br /&gt;売り上げランキング : 27404&lt;br /&gt;おすすめ平均  &lt;img src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774135267/unnonouno-22/" target="_top"&gt;Amazonで詳しく見る&lt;/a&gt;&lt;/span&gt; &lt;span class="g-tools_by"&gt;by &lt;a href="http://www.goodpic.com/mt/aws/index.html" &gt;G-Tools&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;大変面白かったです．初心者用でもしっかり抑えるところは抑えていて，というかマニアックに抑えています．例えばCCDとCMOSの違いとか，どうしてデジイチでフォーカルプレーンシャッターが必要かとか，位相差方式ってどうやっているのかとか，プリ発光がなぜ必要なのかとか，今まであやふやだった部分がかなり抑えられています．カメラのメカに詳しくなりたい人はどうぞ．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-3006833697904356247?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/3006833697904356247/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/01/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3006833697904356247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/3006833697904356247'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/01/blog-post.html' title='理系のためのデジカメ講座'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5953558188291266829</id><published>2010-01-14T22:33:00.003+09:00</published><updated>2010-01-14T22:38:58.172+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>matplotlibで日本語表示～解決編</title><content type='html'>先日，日本語表示できなった理由がわかった．rcParamsのfont.familyでserifを指定したのがまずかったらしい．その設定と，fontpropertiesがバッティングしたようだ．&lt;br /&gt;&lt;br /&gt;この問題は，そもそもデフォルトフォントをserifにしておけばよい．$HOME/.matplotlib/ディレクトリ（環境変数HOMEはwindows版でもちゃんと読んでくれる）以下に，matplotlibファイルを作る．このサンプルは，Python26\Lib\site-packages\matplotlib\mpl-data\matplotlibrcにある．font.family : sans-serifという行がコメントアウトされているので，これをserifに変えて#を消せばOK．デフォルトフォントはserifになる．rcParamsはここの設定をいじくるもののようだ．ふだん使いたい設定はあらかじめ書いておくとよさそう．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5953558188291266829?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5953558188291266829/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/01/matplotlib.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5953558188291266829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5953558188291266829'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/01/matplotlib.html' title='matplotlibで日本語表示～解決編'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-2746942483040429584</id><published>2010-01-13T03:28:00.012+09:00</published><updated>2010-01-15T02:43:01.383+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>matplotlibで日本語epsを生成する方法</title><content type='html'>matplotlibは素晴らしく使い勝手がいいのだが，日本語を表示しようとした途端にハマってしまった．まだちゃんと調べきれてないんだが，どういうわけかうまく行ったり行かなかったりで，とりあえず自宅環境でちゃんと動いたのでメモ．手元の環境は python 2.6 + matplotlib 0.99.1．&lt;br /&gt;&lt;br /&gt;最終的な結論としては，フォントを適切に設定すればOK．フォントファイルの指定はFontPropertiesを使う必要があるようだ．ここで埋め込むフォントで挙動が変わるらしいことが，経験的にわかった．動作を確認したのは最新のIPAフォント（現時点でver 003.01）．このフォントは，埋込PDFを作ることをライセンス上許可しているため，フォント埋込みを要求される論文投稿など（加えて，国際学会に日本語の処理の文脈で投稿する必要がある時）使うと良いだろう．こういう基盤の仕事をオープンソースという形できちんとこなしているIPAはすばらしいと思う．&lt;br /&gt;&lt;br /&gt;フォントの指定は以下のようにすればOK.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python:nogutter"&gt;&lt;br /&gt;from pylab import *&lt;br /&gt;import matplotlib.font_manager as fm&lt;br /&gt;prop = fm.FontProperties(fname='N:\\WINDOWS\\Fonts\\ipamp.odf')&lt;br /&gt;xlabel(u'本日は晴天なり', fontproperties=prop)&lt;br /&gt;show()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;あとは普通にeps出力すれば良い．いくつかハマった点として，どういうわけか古いIPAフォント（ttfファイルだった）を使っていたら，”本本本本本本”と表示された．謎である．MS明朝を指定するとeps出力できなかった．&lt;br /&gt;他の環境では，epsが開けなかったり，pdfなら出力できたり．今思うとこれはgs側の設定の問題かもしれない．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-2746942483040429584?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/2746942483040429584/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/01/matplotlibeps.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2746942483040429584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/2746942483040429584'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/01/matplotlibeps.html' title='matplotlibで日本語epsを生成する方法'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-8879446375797028857</id><published>2010-01-11T17:19:00.004+09:00</published><updated>2010-01-11T17:32:22.227+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='研究'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Pythonでグラフを描くmatplotlib</title><content type='html'>今まで論文を書くとき，「&lt;span style="font-weight: bold;"&gt;漢は黙ってgnuplot&lt;/span&gt;」と思っていましたが，いかんせん描画できないいくつかのグラフがあります．今回，点の大きさがそれぞれ違う散布図みたいなのを描こうと思って，どうしてもよくわからずあきらめました．当初Rを使おうかと思ったのですが，なかなかいまさら文法を習得しづらい．そこでふと調べると，pythonでグラフ描画できるライブラリがあったのですね．それが&lt;a href="http://matplotlib.sourceforge.net/index.html"&gt;matplotlib&lt;/a&gt;．インストールには&lt;a href="http://sourceforge.net/projects/numpy/files/NumPy/"&gt;numpy&lt;/a&gt;が必要です．&lt;br /&gt;&lt;br /&gt;使ってびっくり，非常に簡単，高機能，使いやすい，pythonで書ける．いいことづくめ．大雑把に言うと，x, yがfloatの配列とします．あとは，plot(x, y)を呼んでから，show()するだけ．tkで作られたウィンドウにグラフ描画されます．保存ボタンがあるので，そこからepsを選べば保存できます．eps出力はどうやるんだっけと，ぐぐる必要はもうありません．pythonのnativeなデータを使えるのがうれしい限り．それから，マニュアルが非常に充実しています．検索から何からいろいろ用意されていて，参照している関数にもちゃんとリンクはられているし（当たり前だけど）．サンプルもたくさん．&lt;br /&gt;&lt;br /&gt;これ試すときに気づいたのですが，python付属のエディタ，IDLEって実はおおよそEmacsキーバインドにできるんですね．OptionからKeysをIDLE Classic UnixにすればOK．C-spaceは働きませんが，C-npfbが使えるので，かなり楽チン．IDLEでソースを書いてF5で描画，直してまた描画，このサイクルが非常にスムーズです．python使いの研究者の方は一度お試しあれ．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-8879446375797028857?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/8879446375797028857/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/01/pythonmatplotlib.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8879446375797028857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/8879446375797028857'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/01/pythonmatplotlib.html' title='Pythonでグラフを描くmatplotlib'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-1729802152163224285</id><published>2010-01-11T16:23:00.005+09:00</published><updated>2010-01-11T16:58:31.873+09:00</updated><title type='text'>bloggerの機能を試してみる</title><content type='html'>機能的な面で困ることがないかいろいろ試してみます．&lt;br /&gt;&lt;br /&gt;まずははてぶ周り．テンプレートをいじくったらできました．&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3pMPX8vRG80/S0rSJP_sbyI/AAAAAAAAAPE/cdkoExOv618/s1600-h/b_entry.gif"&gt;&lt;img style="cursor: pointer; width: 16px; height: 12px;" src="http://1.bp.blogspot.com/_3pMPX8vRG80/S0rSJP_sbyI/AAAAAAAAAPE/cdkoExOv618/s320/b_entry.gif" alt="" id="BLOGGER_PHOTO_ID_5425379757475524386" border="0" /&gt;&lt;/a&gt;これね．はてぶ数はimgでやってるのね．0はてぶのときの制御ができないけど，諦める．&lt;br /&gt;&lt;br /&gt;次，コードスニペット．&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class HelloWorld {&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;     System.out.println("Hello World!");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ほんとに表示されてる？　＞されているようだ．&lt;br /&gt;&lt;br /&gt;最後に，TeX．&lt;a href="http://userscripts.org/scripts/show/7966"&gt;mimetexを表示させるためのgreasmonkey&lt;/a&gt;なるものを見つけた．入れてみたけど，ちゃんと動かない．多分，javascriptで$を探して，該当部分をmimetexサーバーに投げて，帰ってきた画像をbloggerに登録して，それをtextareaに貼りつけてるんだろうけど，肝心のmimetexサーバーが落ちているようだ．もし，そういうことをしているんだったら，mimetexじゃなくてmediawikiにも使われているtexvcにして欲しいなぁ．アッチの方が綺麗だし，テキストでいいときはテキスト埋められるのに．&lt;br /&gt;&lt;br /&gt;&lt;a href="http://userscripts.org/scripts/show/41481"&gt;別のがあった&lt;/a&gt;ので試してみる．&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.codecogs.com/gif.latex?%5Calpha%28t%29%20=%20%5Csum_%7Bi=0%7D%5En%20%5Cexp%28w%5ET%20f%28t,%20i%29%29%5Calpha%28t%20-%201%29" align="middle" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;おおお，すごい．これは，texvcっぽいね！ 画像使うモードだけのようだ．すばらしい！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-1729802152163224285?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/1729802152163224285/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/01/blogger_11.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1729802152163224285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/1729802152163224285'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/01/blogger_11.html' title='bloggerの機能を試してみる'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rSJP_sbyI/AAAAAAAAAPE/cdkoExOv618/s72-c/b_entry.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1559015946463351574.post-5370863361013163333</id><published>2010-01-11T15:39:00.004+09:00</published><updated>2010-01-13T00:04:16.736+09:00</updated><title type='text'>bloggerにアカウントを作ってみた</title><content type='html'>はてなが重くて１年以上改善されないので，もういい加減いいかなと思い始めてbloggerにアカウントを作ってみました．はてなのよいところは，OCamlソースのシンタックスハイライトくらいで，他にはてな特有のサービスはほとんど使ってなかったりします．あまりごてごてしたブログサービスは好きじゃないのと，周りに何人かいたのでbloggerにしました．今のところの不満は，ほとんどのテンプレートが細すぎる．昔はこういう横幅をpixel指定したデザインが好きだったけど，ワイド液晶が当たり前になった昨今の液晶事情には馴染まないような気がする．と思ったが，そういう昨今の液晶事情にも関わらずブラウザを最大化している自分がいけない気もする．ちょっと使ってみて本当に移行するかどうか決めようと思う．&lt;br /&gt;&lt;br /&gt;正式に移行を決定したました．過去の日記は&lt;a href="http://d.hatena.ne.jp/u-no"&gt;コチラ&lt;/a&gt;です．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1559015946463351574-5370863361013163333?l=unnonouno.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unnonouno.blogspot.com/feeds/5370863361013163333/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://unnonouno.blogspot.com/2010/01/blogger.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5370863361013163333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1559015946463351574/posts/default/5370863361013163333'/><link rel='alternate' type='text/html' href='http://unnonouno.blogspot.com/2010/01/blogger.html' title='bloggerにアカウントを作ってみた'/><author><name>unnonouno</name><uri>http://www.blogger.com/profile/05396198166738457446</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_3pMPX8vRG80/S0rJeuEOtUI/AAAAAAAAAOc/922ssVNCo38/S220/kappa.jpg'/></author><thr:total>0</thr:total></entry></feed>
