2013年9月30日月曜日

能動学習のさわりの勉強

能動学習とは、少量の教師データから得られた分類器を使って
ラベルがつけられていないデータの中から分類器学習に効果的な
データを機械的に選ぶことによって、分類器性能の向上を試みる
というものです。

今日は休日で、まとまった時間がとれたので、
以下のPreferred Infrastructure社様が公開されている
ustreamのビデオを見て勉強させていただきました。

http://www.ustream.tv/recorded/19579251



■目的

教師データの作成にかかってしまうコストを下げることにあります。
マジメに教師データを作成するとなると、どうしても時間がかかってしまいます。
時間がかかるということは、それだけお金がかかってしまうということ。
そのため、人手でかかるコストを最小化し、教師データは機械的に集める。
これが能動学習の狙いです。


■アプローチ

3種類のものが紹介されていました。

(1)プールベース型

少量の教師データから得られた分類器を『仮分類器』と呼ぶことにします。
この仮分類器が持っている境界線(例えば、SVMなら超平面)に限りなく近いデータを
教師データとして選んで、分類器を作成します。

境界線に近いデータを選ぶ理由は、判断が明確なデータよりも、
判断に迷うデータに対してラベルをつけた方が汎化能力が高まるという考え方です。

例えば、SVMで言えば、超平面が存在でき得る領域を
効果的に狭めることのできるデータを探しだしていくイメージでしょうか。

ちなみに、東工大の杉山先生の資料を見ると、
超平面の存在でき得る領域のことを『バージョン空間』と
呼ぶそうですね。勉強になります。

http://sugiyama-www.cs.titech.ac.jp/~sugi/2009/NEC-MachineLearning1-jp.pdf


(2)ストリームベース型

仮分類器でラベルなしデータを分類させるところまではやっておいて、
その結果が教師データとして使うのにふさわしいのかどうかを判定する方法
なのだと解釈しました。
そして、判定結果にかかわらず、そのデータが用済みになったら
保存せずに捨てても動作が破綻しないようにした手法のようです。

ここは理解が進まなかったので、推測です。


(3)クエリー型

とにかく自分で事例とラベルを与える方法です。
例えば、手書き文字認識システムにおいて、「3」という数字が
認識できなかったとしたら、それをユーザー自らが
「3」という文字を書いて教える、という感じでしょうか。


■感想

(1)プールベース型は、正例と負例が誰が見ても納得できるようなものになっているのが
前提な気がします。
あと、境界付近のデータは人間が判断しづらいものも少なくないと考えられます。
こういうデータに対して強引にラベルをつけると性能劣化につながりかねないと思います。
この件については、ビデオの質疑応答にもあったのですが、発表者が回答したように
もうどうすることもできない、というのが実態なんでしょうね。
そのため、定義が客観的に明確であるトピックを相手に使うのが良いのだと考えました。

(2)ストリームベース型は、まさしく今ホットなオンライン学習のための手法ですね。
解釈が間違っていなければの前提ですが、人によって曖昧な判断しかできないデータは、
考えても仕方がないので、さっさと捨てて次に進むのも1つの道だと感じました。
ここは、あとで勉強した方が良さそうです。

(3)クエリー型は、大昔のViaVoiceにあった「エンロール」ってヤツじゃない?
ユーザーの声の特徴を把握するために、少量の音声データを与えて
不特定話者用の音響モデルをユーザーの声に認識しやすいものに更新する
って機能ですし。。。
歴史は案外長そうです。


これらは実際に使ってみなければ何とも言えないのですが
早めに取り組んでみたいですね。



2013年9月29日日曜日

潜在意味解析

潜在意味解析(LSA)とは、高次元のデータを低次元に圧縮する技術(次元圧縮と呼びます)です。
主成分分析をご存知の方は、そちらをイメージすると理解が早いです。

■用途

①文書分類
②検索ワードとは異なる表現をした文書の検索
③情報推薦



■考え方

どのデータも、予め決められたいくつかの素材データの組み合わせで
構成されていると考えます。
つまり、データの差分は、素材データが使われた量の違いであると考えるのです。
(量がマイナスになるものもありますが、ここはご愛嬌ってことで・・・^-^;)

この素材データが何であるのか、という点と、その使用量の2つを推測し、
これらを何らかの形で活用しましょう、という発想がLSAです。

「何らかの形で」と表現をぼかした理由は、用途によって使い方が違うからです。


■特異値分解(SVD)

LSAのメインはSVDです。
SVDとは、1つの行列を、3つの行列の積として表現するための処理方法で、
先ほどの考え方の項目で書いた「素材データ」と「その使用量」を
求めるために使用します。

式で書くと、こんな感じです。

 D = U・S・V*   ・・・(式1)

Dは分解前の行列で、n x m 行列です。

Uはn x k の直交行列です。ここで、kはnとmのうち小さい数値が入ります。
Vはm x k の直交行列です。V*はVの転置行列です。
Sは、k x k の対角行列であり、特異値が並ぶ対角行列となっています。 

ここで、特異値とは、行列Aと行列A*との積を固有値分解し、
その平方根をとったものです。非負値です。


ここで注目するべきところは、行列Uと行列Vが
それぞれ直交行列である点です。

これは、行列Dの部分空間にあたる基底ベクトルが
行列Uあるいは行列Vであることを示しています。
ここで基底ベクトルとは、先ほどの「考え方」のところで書いた
素材データのことを言います。

よって、(式1)が言わんとすることは、
行列Dとして表現されたデータは、
行列Uで表された素材データを
行列(S・V*)*で表される量だけ配合したもの、
と見ることができるのです。

(かなり説明を飛ばしましたが、ここは行列としての本質になるので
 後で改めて説明しましょう。気が向いたら・・・ですが・・・(^-^;;))


ちなみに、具体的なSVDの数値計算の仕方は私も分かりませんm(_ _)m
こちらは、必要に迫られたときに勉強したいと思いますが、
今のところは、Rのライブラリがあるので、有難く使わせてもらうにとどめています(^^)



■次元圧縮

LSAでは、SVDを行った際に得られる3つの行列(式1を参照)のうち
行列Sにあたるものが、次元圧縮の鍵を握っています。

行列Sは、特異値が対角に並んでいる行列でした。
この特異値は、要は固有値そのものです。
つまり、行列Uあるいは行列Vで表される素材データの
量にあたるものです。

つまり、特異値が小さいものを使わないようにすることによって、
情報を抽象化したり、演算量を削減したりするわけです。

実際には、(式1)でいうkの値を小さくすることによって実現します。



■分析の仕方の例

ここでは、冒頭で書いた3つの用途について書いてみます。

①文書分類

単語文書行列(ここでは文書を行ベクトルで表現する。素性は単語)を
SVDして、行列Vを求めます。

行列Vは、行列Dで表される各データを
行列Uの各列を基底ベクトルに持つ部分空間へ
射影した後の座標です。

この行列Vとその転置行列であるV*との積を取ることによって
各文書が他のどの文書に近いのかを把握することができます。
この行列積の各要素の大きさを基にしてデンドログラムを作成していけば
クラスタリングの結果を得ることができます。


単語の抽象化が必要なければ、行列Dと行列Uとの積をとり、
各要素の最大値を調べることによって、行列Dの各列データが
どこに所属するのかを決めても良いと思います。


②検索ワードとは異なる表現をした文書の検索

検索対象とする文書データ全体に対して単語文書行列を作成します。
そして、この単語文書行列の転置行列に対してSVDを行います。

行列Uは、部分空間の基底ベクトルの集合となるので、
こんどは検索文字列にあたる入力ベクトルの左から
行列Uの転置行列をかけて、次元圧縮を行います。

この次元圧縮後の入力ベクトルと、行列Vとの積をとると
検索対象の文書データとの類似度がそれぞれ求まりますから、
この中から一定値以上のものを検索結果として出せばよいでしょう。


③情報推薦

基本的な考え方は②と同じです。
②において、次元圧縮後の入力ベクトルと、行列Vとの積で得られた
列ベクトルのうち、もっとも要素値が高くなった文書を
推薦結果として出せばよいでしょう。



次回は、サンプルプログラムを用意しようと思っています。

サンプルは、あらびきさんのソースコードがとても分かりやすいので、
以下のサイトを参照して頂くのが良いかと。。。


■参考資料

潜在的意味インデキシング(LSI)徹底入門(あらびき日記)
http://d.hatena.ne.jp/a_bicky/20120324/1332591498

LSAの概要と実行(猪原敬介さんの資料)
http://www.educ.kyoto-u.ac.jp/cogpsy/personal/Kusumi/datasem09/inohara.pdf


2013年9月27日金曜日

ソーシャルメディアを利用したセレンディピティな情報推薦

Gunosyがどんなアルゴリズムで動作しているのか知りたくて
あれこれググってみたら、以下の論文を見つけました。
表題はそのタイトルです。

ソーシャルメディアを利用したセレンディピティな情報推薦
https://kaigi.org/jsai/webprogram/2012/pdf/358.pdf

結構先端の技術を使っているというので、難しい確率分布が出てきたりするのかと
ドキドキしました(理解力の弱い自分がきちんと理解できるのかという意味です)が、
蓋を開けてみればとてもシンプルでした。良かった。


アルゴリズムのポイントは、文書についたソーシャルタグ(ユーザーがつけるタグ)
に対するTF-IDFを使うところですね。

ユーザーのプロファイル情報としては、過去に投稿したTwitterやFacebookの
文書に付与されたURLを使います。
URLであれば、はてブのAPIでソーシャルタグを取ることが可能です。
それを使って、ユーザーの発信したURLに対するソーシャルタグのTF-IDFをとり、
その上位100位までのソーシャルタグを抽出します。
これをユーザープロファイルと扱います。

次に、ユーザーの隠れた好みを抽出するための情報を求めます。
この情報を抽出するにあたっては、タグの共起グラフを利用します。
ソーシャルタグは、基本的には1つのURLに対して複数つけられるので、
1つのページに一緒につけられたタグを手がかりにして共起グラフを作成します。
これを使って、ユーザープロファイルに近く、かつユーザープロファイルに
存在しないしないタグを隠れた好みの情報として扱います。

最後に、Webページに付与されたタグと、先ほど求めた隠れた好みの情報とを比較し、
共起の割合が高いものから順に推薦する、という流れになっています。
Webページの情報については、具体的なことが書かれていないので想像になりますが、
多分はてブのタグをそのまんま使ったのではないかと予想しています。


この手法の長所と短所を勝手に考えてみました。
以下の通りです。

■長所

  • とにかくシンプルで実装しやすい。
  • 仕込みを機械的に行える(運用の面では、結構ここ重要だと思う)
  • ポータルを持っている会社には、自社サイトを中心に紹介するエンジンに作れるので、広告費で儲かりそうだという妄想を抱ける(笑)

■短所
  • ユーザーが発信した情報の中にURLが入っていないとレコメンドできない。
  • いろいろと解釈ができそうなサイトがレコメンドされにくい。
  • リアルタイムな情報をレコメンドできない。(これは協調フィルタそのものの問題かも)

とにかくシンプルなのが良いですね。
有識者が集まってアイデア出しをすれば、いろいろと用途が発掘できそうな予感がします。
(発掘できなくても責任は持てませんが。。。(^^;))


2013年9月26日木曜日

「売れる商品は感性工学がある」

台風が近づいているせいなのか、風が強い。
とりあえず、午前中に通り過ぎるのを期待して
半休をとってみました。


さて、昨日の話になるのですが、
次の本を読み終えたので、簡単にレビューしてみます。

椎塚久雄著「売れる商品は感性工学がある」
http://www.amazon.co.jp/dp/4584135126


著者の椎塚久雄先生は、工学院大学の教授をされていて
日本感性工学会の会長もされている方とのことです。


椎塚先生は、「感性工学」の「感性」とは、Tastingのことであったり、
「感性とはゆらぎである」と仰っています。
本書では、ノイズ(=ゆらぎ)が感性として有効に働くと説明されており、
事例として食塩と岩塩の比較を語られていましたが、
私にも確かに思い当たるところがあるなぁ・・・と思いながら読みました。

私がパッと思いつく事例は、音楽でしょうか。
カセットテープとかレコードの音はノイズが入りまくっているのですが、
そのノイズが今では嫌なものには感じません。
(コンテンツがまったく聞こえなくなるくらいのものは、もちろんNGですよ!)

それは、ノイズから連想される私の記憶が悪いものではないからなんでしょうね。
私が音楽のノイズを聞いてパッと連想されるのは、
カセットテープに録音した深夜のFM放送の音楽番組。
いろいろな洋楽を聞けるきっかけを与えてくれた、良い思い出です。


他に印象に残ったセンテンスは、次の①~⑤ですね。

①人は結局好き嫌いで判断している

これはとてもよく分かります。
メリットが多いと自分でも感じていながら却下した出来事なんて
私も結構あります。

コラムニストの中森明夫さんが、大昔にTwitterで
「芸能人の仕事は、好きになってもらうこと」って呟いておられました。
でも、これは芸能人に限らず、ビジネス全般的に言えることなのではないかと。
「好きになってもらう」ようにするのはなぜか。
この理由が「人が好き嫌いで判断している」からなんだと感じました。
スペックだけではないのです。

参考:https://twitter.com/a_i_jp/status/4162611914481664


②(ものを選ぶにあたっては)大きな好きが一つかふたつあればいい

重要な話だと思うのですが、意外と最近は自分の持っている「大きな好き」を
理解できなくなっているのではないかと考える自分がいます。
何をやるにしても、選択肢が非常に多くなってきたからです。

だから、『大きな好き』を見つけるお手伝いをするための
技術開発を今提案しようとしているところなのですが。。。

このセンテンスを読んで、自分の今の仕事のことをつい考えてしまいました(笑)。


③価値は情報の受け手が価値を認めて初めて価値が生まれる。

文言だけを読むと、至極当然な話なのですが
意外と忘れがちな話なんだと感じました。


④コンジョイント法

性能や価格などの要素の組み合わせを何パターンか作り、ユーザーにどれなら買うのかを選ばせる方法。
人間はバランスをとりたがる習性を利用しているのだそうですね。

この方法は、妥協できるゾーンと妥協できないゾーンの境界を
見つけ出す目的で使うのが良いんでしょうね。
境界が分かれば、あとは企画しているサービスとかが
妥協できるゾーンにいるのかどうかをポジショニングしながら
改良していけばいいわけですし。。。


⑤映画の予告編は、映画制作者ではなく予告編制作プロダクションなるところが作る。

そんなプロダクションがあったなんて知りませんでした(笑)

撮影した映像の流れに沿って作られてしまって映画の魅力が半減してしまう、
という理由からなのだそうです。




分量そのものは少なく、分かりやすい表現で書かれているため
1時間ちょっとあれば読めてしまいます。
それでいて、メーカーに身を置く人間として、
いろいろ考えさせられるところもありました。

良書です。

2013年9月25日水曜日

はじめに。。。

もう、あと少しで10の位が「4」になってしまう
ソフト系の仕事をしているヲッサンです。

ここでは、私が自分の時間を使って勉強したことを
メモ書き程度に書いていこうと思っています。
用途は、備忘録ってところでしょうか。


1人で勉強する環境って、10年前と比べると大分良くなってきました。

普段Macbook AirとiPhone5を持ち歩いているんですが、
iPhone5がテザリングできるので、ネットつなぎたい放題です。

通信速度もそこそこあるので(一応LTE対応)、特許や論文の調査も行えます。
サーバーにつないで、Webアプリのコーディングの練習もできます。

環境だけは素晴らしい。
あとは、自分のスキルアップを図るだけです(笑)。


さりげなく自分を追い込んでみました(笑)。

頑張ります。