読者です 読者をやめる 読者になる 読者になる

俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

TensorFlowを使ってRoomClipの部屋診断 - 日報 #159

すごい久しぶりの更新です。
さすがにこんだけブログを書いてないと、かなり敷居が高くなってしまうものなのですが、今日はちょっとお土産ができたのでそれでご勘弁いただこうかと。

巷じゃDeep Leaningってなものが流行っているそうですね。
続々と論文がでたりツールが発表されたりと生き馬の目を抜くリリース合戦が繰り広げられておりますが、 天下のGoogle社からこんなもの(TensorFlow)が登場して、さぁ大変といった模様です。

このDeep Learningですが、
真面目に中身を理解しようとするとなかなか骨が折れます。
「まずはニューラルネットから」しっかりと勉強していく連載を考えているのですが、ここでは軽く概要だけ。

これ乱暴に言いますと、
「何かを入力すると、あるルールにしたがって計算をして、何かを吐き出す」
というまったくもって普通の関数のようなものだと捉えることができます。
特徴的なのは、
「そのルールとやらについて、詳細は何も設定しない」
というところなんですね。
なんとなくの設計、くらいはプログラムするのですが、
詳細な係数の値とか、定数の値とか、その辺は「本当に適当」な数値をいれているのです。
ですが、それではもちろん用をなさないので、
目的のものを吐き出すように「学習」させるんですね。
答えがわかっている入力データを大量に用意して、
それをわざと入力し、結果出力される値と、前もって知っていた答えをみくらべ、
合っていれば放置、間違っていれば詳細の値を「少しだけ」修正する。
これをずーーーーっと繰り返すと、
いつかちゃんと答えを返すような詳細の値、すなわち全体の計算式が確定するわけです。

まぁ分かりづらいですが、
これのいいところは「計算式の詳細」についてもともと知っている必要がないってことなんですね。
例えば、
ある値をいれると、その2倍の値が返ってくるような謎の箱Fを考えるとします。
この謎の箱Fがやることは、数学的に求められます。っていうか2xです。
ですが、敢えてそうせずにものすごーーーい複雑な計算式にして、
その係数などを全部変数にして、ひたっすら色んな値を突っ込んで、
正解がでるようにちょっとずつ変数を調整して、
そして2倍の値が常にでるような超複雑な謎の箱Fを用意するという戦略をとるのがDLなのです。

この例ですとた、ただただ回りくどい方法にみえますが、
「そもそもどういう計算式にしていいかわからないもの」
に関してはものすごい効力を発揮するわけなんですね。

例えば、

とある画像データを入力したら、「犬」が写っていることを認知する謎の箱Fを考えたとして、その中身を前もって数学的に記述するのは相当難しそうです。
なのでその辺はぼやかしておいて、ただひたすら「犬」の写真を学習させる。
最初は不正解だらけだった謎の箱Fも、何度も何度も自身の変更を繰り返すことで、
やがて犬を認識するようになる。
実際中身がどうなっているかは誰も演繹的に説明はできないが、
結果は出せるという、本当の謎の箱Fができあがるわけです。

この辺の具体的な話はまた次回以降にまとめるとして、こんな便利なものないわけですね。しかも、Deep Learningは「画像認識に強い」なんていう論文もいくつも提出されたとあっては、RoomClipとしては放っておける訳ないのです。

さっそく使って遊んでみましょう。

ということで出来たのが、
TensorFlow ✕ RoomClip お部屋スタイル診断ツール

roomclip.jp

です。
冒頭に触れたGoogle社のTensorFlowをつかったツールとなっておりまして、
弊社の優秀なインターンであるM君が、
英語ドキュメントと格闘しながら作り上げてくれました。
本当すごいがんばってくれたので、
ぜひ彼のエンジニアブログも拝読ください。

t8m8.hateblo.jp

(RoomClipはいつでもエンジニアインターンを歓迎しているよ!軽いノリで連絡ください!)

さて使い方はいたって簡単、

RoomClipに登録して!(ここ重要)、
実際にあなたのお部屋の写真を投稿して!(ここも重要)、
そのURLをここに入力すると、
なんと
「あなたのお部屋を合計20個のインテリアスタイルで診断してくれる」
んですね!

判定してくれるスタイルは下記の20通り!

  • シンプル
  • カフェ風
  • 男部屋
  • ホワイトスタイル
  • 北欧風
  • 西海岸系
  • カラフル
  • アンティーク
  • ビンテージ風
  • カリフォルニアスタイル
  • モノトーン
  • インダストリアル
  • 昭和レトロ風
  • ナチュラル系
  • ごちゃごちゃ系
  • レトロスタイル
  • フレンチ風
  • アメリカンスタイル
  • 男前インテリア
  • ジャンク系

これらインテリアスタイルをRoomClipの中にある120万枚の写真から学習し、
判定してくれる謎の箱Fを作ったというわけなんですね。

さっそく、弊社代表の高重の部屋で試してみましょう。

roomclip.jp

まごうことない和風、昭和レトロスタイルです。
さてさて、、、これがどのようになるか、さっそく計算してみます。

f:id:tom_rc:20160330010033p:plain

わくわく。
計算中です。
TensorFlowはコーディングはわりとシンプルにできるし便利なんですが、
如何せん評価がすごい重たいです。
どなたか簡単にevalできる方法ご存知のかたいらっしゃいますでしょうかね。。。

とにかく待ちます。

...

でました!

f:id:tom_rc:20160330010159p:plain

た、、たしかにシンプルで男部屋だけども、
カフェじゃないよなぁ…
1%だけでも西海岸風の要素があるというのも解せませんね。。。

くっそ〜〜!!
まだまだ画像解析の道のりは険しいぜっ!!
じゃぁみんな、また来週!

(120万枚以上の実際に人が住んでいる部屋写真を有するRoomClipを運営するTunnel社は、積極的にエンジニアの採用を行っております。ご興味ある方は下記リンクまたは、このブログのどこにでもよいので痕跡を残していただければ反応いたします。)

www.wantedly.com