Ak1x Blog

Ak1xの活動記録。ITとかスノーボードとか、色々。

LINE DEVELOPER DAY 2019に参加してきました

11月20日から21日にかけてグランドニッコー東京 台場で開催されていたLINE DEVELOPER DAY 2019に参加してきました。今回は学生向け参加支援制度の支援対象者に選んでいただいたので、被支援者として参加記を残します。

engineering.linecorp.com

 

筆者は

某大学情報系に通う学部3年生です。普段は大学で情報工学を中心に勉強しつつ、機械学習(とりわけ自然言語処理)を用いた研究に取り組んでいます。情報系の学部生としてLINEという会社に興味を持っていること、自身が研究で取り組んでいる機械学習に関する知見が多く得られるであろうということ、などをモチベーションとして今回のLINE DEV DAYに参加することとしました。

毎度のことですが、記事の内容に間違いが含まれることがあります。遠慮なくご指摘いただければと思います。特に今回は事前知識が少なく、各セッションで登場する単語がほとんどわからないような状況でした。記事を書く際にある程度調べて書いていますが、理解が至っていない部分もあるかと思います。読者様のご容赦とご指摘を重ねてお願いいたします。

 

LINE DEVELOPER DAYとは

「LINE DEVELOPER DAY」は、LINEが運営する様々なサービスの技術領域でのチャレンジや知見、これまでそして今後の取り組みを紹介する技術カンファレンスです。 

LINE DEVELOPER DAY 2019

 LINEのサービス以外にも国内外のゲストスピーカーによるセッションもあり、テーマはセキュリティやインフラなど多岐にわたっていました。

DAY-1は技術的な側面が強く、DAY-2はプロダクト寄り、という構成でした。各セッションの内容の充実度は言うまでもありませんが、ブースで社員の方と直接お話しすることもでき様々なお話を伺えたことも貴重な経験でした。

 

参加したセッションの内容

先述の通りML関係のセッションを中心に見て回ろうと考えていたのですが、直前になって予定が立て込んでしまい、各日2セッションしか参加することができませんでした。内容についてもMLに限らず私が面白そうだと思ったセッションを選んでいます。

 

エムスリー におけるAI・機械学習チームの立ち上げと機械学習プロダクト開発

 

speakerdeck.com

 

ここでわざわざ紹介するまでもなく有名な西場氏のセッション。エムスリー におけるゼロからのチーム立ち上げとその発展についての話でした。西場氏が所属するAI・機械学習チームの2017年3月の立ち上げ以降3年間チームリーダーとしてどのように行動してきたか、失敗も含めてお話しされていました。

(感想)

このセッションには途中から参加しました。「自分が当たり前と思うことは教育できない」「全員と均等にコミュニケーションを取らない(得意な人にメンタルケアは任せてしまう)」のようなマネジメント面における言葉が私にはとても刺さりました。これらは思っていても中々口に出せず、実行することはもっと難しいでしょう。そのまま真似するかはともかく、この考え方をしっかりと自分に残しておきたいですね。

また、採用に関して並並ならぬ熱意を感じました。エムスリー に入れていただけるようなギークさを身につけたいところ。頑張ります。。。

 

Backend Architecture Design for Analyzing and Processing Massive Blockchain Traffic

 

speakerdeck.com

 

LINEが独自に開発したブロックチェーンネットワーク「LINK Chain」のブロック/トランザクション情報をLINK SCANで表示するのにどのように構築したのかという話。ブロックチェーンの特徴とそれに合わせた実装手段の選択が中心でした。LINK SCANの開発ではApache Kafka・Apache HBase・Apacheなどが用いられたようです。

(感想)

今とても話題を呼んでいる「ブロックチェーン」の話です。構造自体は他のWebサービスと近くそこまで難しくはありませんが、ブロックチェーンが持つ特性に合わせたライブラリ選択の必要性を感じました。

 

Flutter for LIVE Commerce

 

speakerdeck.com

 

 LINEは「ライブコマース」に参入予定であり、専用アプリをiOS/Androidプラットフォームでリリース予定となっています。その開発にFlutterというフレームワークが使われたという話。FlutterはGoogleによって開発されたクロスプラットフォームのUIフレームワークです。クロスプラットフォームというとプログラム的な効率の良さに目が向けられがちですが、チーム間の単純化・意思決定の早さに繋がる点も重要であると強調されていました。仕様変更があっても人が減ることで意思決定をより早く行うことができたそうです。一方、こうした新たな取り組みはメリットだけでなくデメリットもあり、導入前はデメリットを周囲にきちんと説明することに取り組んでいたそうです。

(感想)

クロスプラットフォームというとReact Nativeのイメージがあり、Flutterについては名前を聞いたことがある程度でした。Lean開発を進める上で意思決定が早くできる点は大きいと感じます。クロスプラットフォームはどうしても個々にチューニングが必要な部分がある点が引っかかっていましたが、この部分は初めからネイティブで書いて対応されていたそうです。個人的にはFlareのAfterEffectsっぽい操作感が気になりました。

 

Rebuilding Slack Search with Armeria

 Slackの検索インフラをArmeriaを使ってリビルドしたという話。ArmeriaはLINEが公開しているHTTP/2対応Java向け非同期RPCライブラリです。リビルドの際のRequirementsはjava, multiprotocol(gRPC, thrift, etc...), honeycomb, Consulなど数多くあり、Armeriaがそれらを全て満たしていたため採用されたそうです。ArmeriaはthriftやgRPCを使って定義したAPIに沿ったクライアント・サーバのプログラムを作成し、HTTP/2で通信してくれるライブラリだとか。REST API他様々な機能に対応しており、マイクロサービスで必要なものが全て揃っている便利なフレームワークのようです。

(感想)

「Armeriaとは?」ってずっと唸ってました。RPC周りやHTTP/2についてもろくに知らなかったので帰ってから調べました。Armeriaの「なんでもできるよ」感はすごいですね。RPCをたくさん使うマイクロサービスでは重宝されるライブラリだと感じました。

 

終わりに

開催されてからだいぶ時間が経ってしまいましたが、なんとか書き終えました。今回参加した全体の印象は「全然知らないことばっかり」でした......。今回をきっかけに色んなライブラリやらフレームワークやらを調べていますが、その数の多さ・広さに絶望しています。一つ一つ勉強して全体を俯瞰できるようになりたいです。

最近Web系に知識が偏ってきていますが、サボりがちなML系の知識も増やしたいところ。ブロックチェーンも騒がしくなっていますし、面白そうなことはたくさんありますね。

Inter BEE 2019 / DCEXPO 2019に参加してきました

 11月13日から15日まで幕張メッセで開催されていたInter BEE 2019 / DCEXPO 2019に参加してきました。

大学の授業の休講の代わりという形で参加したのですが、想像以上に興味深い展示が多かったので記事として残しておくことにしました。まわることができた展示の中からいくつかに絞って概要と私の感想を簡単にまとめようと思います。

 

※11.18 追記

同行した友人の情報も合わせて一部修正しました。

  

筆者は

某大学情報系に通う学部3年生です。普段は情報工学を学んでいますが、高校生の時分からAE等を用いながら動画編集に取り組んでおり、映像コンテンツに対して興味を強く持っています(最近動画編集はサボりがちですが...)。

一方で、VR/ARといった新たなデジタルコンテンツにはあまり関心を持っておらず、だいぶ乗り遅れてしまった感があります。全く事前知識等を持たずに参加したので、「一般人から見た最新デジタルコンテンツ技術」くらいに読んでいただければと思います。

 

Inter BEE / DCEXPOとは

Inter BEEとDCEXPOは別のイベントですが、同時開催されており来場者は自由に行き来することができます。

InterBEEは音・映像・通信に関する国内最大級のイベントです。詳しくはHPをご覧ください。

www.inter-bee.com DCEXPOは動画や音楽・ゲームなどに関わる先端コンテンツ技術とデジタルコンテンツをテーマにした国際イベントです。こちらも詳しくはHPをご覧ください。

www.dcexpo.jp

 

今回はDCEXPOを中心に回りました。大学の講義で紹介されていたイベントがDCEXPOであり、まわる時間も限られていたためです。

 

各展示の感想

ビジネスを強く意識したものから大学院生の研究まで幅広く扱われており、手作り感満載のものもあれば実際にリリースされる予定の製品も展示されています。ここからは回った展示の中から興味深いと感じたものを簡単にまとめます(今回は記事を書くつもりがなかったため画像を全く用意していません、すまぬ)。

Looking Glass 8K

Looking Glass Factoryが発表した3D映像を映し出すことができる卓上型ホログラフィックディスプレイです。反響が大きく他の記事もたくさん書かれているので本記事では詳細は割愛しますが、このディスプレイはすごいです。2Dディスプレイと変わらぬ薄さと映し出された映像の綺麗さ、精巧さに驚かされました。これまでの飛び出す8Kテレビとは異なり、3Dモデルの立体がきちんと全部描画されているらしいです。

3Dモデルの立体が描画されている様子はTwitterで検索すると出てくるのでぜひ見てみてください。

余談ですが、エヴァの発令所に出てくる「警告」というホログラフィックが作れたらすごいんだろうなぁと昔から考えていました。現実になりそうで開いた口が塞がりません。

Blinky

アルファコードが出展したBlinkyはVRコンテンツの作成から配信・販売までを一つで行うことができるプラットフォームです。体験では、アルファコードが以前に作成した工場見学VRコンテンツの視聴とVRコンテンツの編集操作を行うことができました。

既にサービス展開していることもあり、コンテンツとしてのクオリティはとても高いです。

工場見学のVRコンテンツは実際に工場内部にいるような感覚を味わいながらしっかり説明を聞くことができました。工場見学は説明の声が機械の声で聞こえなかったり、説明している部分以外はあまり見ることができなかったりします。また、衛生面から入れない・入るのにいろんな処置を施すといった手間があります。こうした問題に対してVRの場所を選ばず個人で体験できるという部分が適していると感じました。

VRコンテンツの編集操作はUIが練られており、「これなら未経験者でもすぐに始められる」と感じさせるほど直感的な操作が可能でした。既存の動画編集ソフトにおいて初心者が障壁と感じがちな操作の煩雑さを改善しているのはとても良いと感じます。

また、8Kリアルタイム処理VRライブストリーミングも行なっていました。「来たる5Gの世界を見越して」とのことですが、これが実現すればスポーツやライブ観戦がVRでできるようになるんだと思うと楽しみです。

仕掛け絵本

首都大学東京システムデザイン研究科IDEEA Lab.に所属されている院生の方が作成された「インタラクティブ仕掛け絵本」です。電子回路などを一切持たない紙の絵本とデスクライト型のプロジェクタカメラシステムを用いています。ギミックについて(あまり語るとネタバレになってしまいますが)、腕を本の上に置くアイデアは自分の行動が反映されており紙ではできない良いアイデアだと感じました。絵本を読む(大人視点から見た)退屈さが無く、ビデオゲームとも違った新しい体験でとても面白かったです。

電気刺激による味覚操作手法

電気刺激を利用することで、食べているものの味を変化させる技術です。展示では実際に電極をつけて卵やスポーツドリンクの味の変化を体験しました。味の変化は「濃い→薄い→濃い」のように濃淡で感じることができました。体験中電気的なものは感じることはなく、ただ味だけが変化しているような感じです。この展示は東京大学大阪大学明治大学の学生によるもので、アイデアは比較的単純なんですが、それを思いついて実際にやってみることに同じ大学生として感心させられました...(すごい...)。

キックウェイ

ハシラスが展示している「キックウェイ」はパーソナルモビリティ型VRライドデバイス、という区分がされるそうです。早い話がVR版ジェットコースターです。セグウェイのような形状のデバイスに実際に乗ると、映像効果とデバイスから吹き付けられる風によって本当に走っているような感覚が得られました。乗っている間は気がつかないんですが、デバイス自体はほとんど動いていません。映像や風・振動など複数の要素を用いることで疾走感や遠心力を演出しているようです。一方で、無重力感(ジェットコースターのふわっとするやつ)はもう少しかな、と感じました。アーケードゲームであればすぐにでも実現できそうで商用化への期待も高いと思います。

ピクセルごとに色や不透明度を調節できる透明ディスプレイ

Adobeが出展していたディスプレイです。ピクセルごとに色や不透明度を調節できるので、ディスプレイの置いた物体を活かした映像を流すことができます。また、タッチにも対応しており、タッチしたところだけ変化させる、ということも可能です。紹介された時は商品のディスプレイに使えると伺ったのですが、何かもっと有効な活用法がある気がしています。

終わりに

VR/3Dを中心とした技術が大半を占めますが、他の技術を用いたものもあり飽きることはありませんでした。僕が影響を受けやすいというのもあるんですが、「VR/ARに面白いコンテンツがたくさんある」というのを強く意識させられました。VRやARに限らずコンテンツを支える技術の最新動向を一度に見ることができる点で、DCEXPOやInterBEEに参加する意義は大きいと感じます。

 

あとがき

私には文字ベースより情報量が多く他者に伝えやすい、という理由で映像に手を出した過去があります。VRやARはその映像よりもさらに多くの情報を他者に伝えることができるという点で私にとって非常に興味を引く分野です。

最近はスポーツやゲームの配信技術にとても興味を持っており、これにVR/ARを活かせたらより楽しめるメディアが出来上がると思っています(実は春は強化学習よりこれに取り組みたかった)。今後は機械学習だけでなくVR/ARといった分野のキャッチアップもしていこうと思います。

 

P.S.

テストの感触が悪い&寝不足で不機嫌な僕と一緒に回ってくれたみんな本当にありがとう。

もし写真あったらください...。

強化学習でMicropolisの自律エージェントを作った

はじめに

この記事は 2019年4月から8月まで取り組んだ研究についてまとめることを目的としたものです。研究内容は「強化学習によるMicropolisの自律エージェントの作成」です。強化学習Micropolisについての説明も加えつつ、取り組んだ内容を書いていければと思います。

前提

筆者は

某大学で情報系の学部3年生です。それまで機械学習に触れたことはありませんでしたが、2019年4月より本テーマに取り組むことになり強化学習を中心として勉強を進めています。まだまだ勉強中で、書いてあることに間違いも含まれているかと思います。発見された方は遠慮なくご指摘していただけると助かります。よろしくお願いします。

強化学習とは

Wikipediaには以下のように記載されています。

強化学習(きょうかがくしゅう、Reinforcement learning)とは、ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種。

出典: 強化学習 - Wikipedia

強化学習教師あり学習教師なし学習と並ぶ機械学習の一種です。「最終的に得られる価値を最大化する」ことが最終目標となります。ここで「最終的に」とつけましたが、強化学習においてはこれが非常に重要となります。その場で得られる報酬よりも、行動をとり続けた最後に得られる報酬を優先するのです。

 

例えば、スーパーに牛乳を出来るだけ安く買いに行くことを考えましょう。普段¥150で売られていたとします。今目の前においてある¥150の牛乳を購入すれば、ひとまず「牛乳を買う」という目的は達することができます。ここで、「10分後にタイムセールが始まり、牛乳は¥130になる」という情報が得られたとします。これなら、今は買わずに10分間待ってから牛乳を買ったほうが、「より安く」牛乳を買うことができます。

 

牛乳の例では、「すぐ買う」という選択肢よりも「10分待つ」という選択肢が結果的に「より安い」という報酬を与えています。このように最終的に得られる報酬を最大化するように行動を学習するのが強化学習です。

 

強化学習では対象の問題がゲームとなることが多いです。これは環境・エージェントの行動を規定しやすいためです。現実の問題はいわゆるグレーゾーンが多く、ルールとして定めることが難しいです。これは強化学習に限った話ではなく、機械学習全体でいえることでしょう。

 

Micropolisとは

Micropolisは街づくりを行うシミュレーションゲームSimCityシリーズの第1作目です。3×3を基本とした建物のマスを平面状のマップに設置していくことで街を作っていきます。都市の規模を大きくしていくことが目標ですが、明確なクリア条件は指定されていません。

f:id:Ak1x:20190811181535p:plain

Micropolisのプレイ画面.

Micropolisにおいて、住宅地(R:緑のセル)・商業地(C:青のセル)・工業地(I:黄色のセル)が最も重要な要素です。ゲーム初期において、これらをバランスよく立てていくことが重要となります。

 

問題設定

今回の問題は「Micropolisでできる限り人口を増やす」と設定しました。Micropolisには公害や地価など様々な要素がありますが、これらの値は気にせず人口を増やすことだけに集中します。

f:id:Ak1x:20190811183732p:plain

今回扱う問題の構造.

 強化学習の問題を定義するには「報酬」・「状態」・「行動」が必要です。本問題では、「報酬」として人口を定義しています。また住宅地・工業地・商業地がバランスよく建てられているかを表す指標として「多様度」を導入しており、これも報酬の一つとしています。「状態」には指定した範囲の街の様子を定義しています。「行動」には各種建物を建てる・取り壊すことを定義しています。

 

なお、今回はエージェントに環境の情報全てを与えることはしないので、本問題はモデルフリーの問題となります。

 

手法

概要

強化学習アルゴリズムとして有名なA2Cという手法を用います。

A2Cとは

以下の図をもとに説明していきます。

A2Cの説明としてはとても弱いので、詳しく知りたい方はOpenAIのリファレンスやA3Cの論文等をご覧いただくと良いと思います。

f:id:Ak1x:20190811185418p:plain

本問題におけるA2Cの構造.

強化学習におけるエージェントの役割は、「状態と報酬を入力とし、行動を出力する」ことです。したがって、エージェントは状態と報酬を入力とし行動を出力とする関数を持ち、この関数を学習によって発展させていきます。

 

A2Cはadvantage Actor Criticを略したもので、Actor Critic法の一種です。強化学習において行動を選択する基準を「方策」と呼びます。Actor Critic法は、実際に行動を決める方策を持ったActorと方策を評価するCriticを同時に学習させる手法です。Criticで学習させるV(s)は状態がsである時の価値を表し「状態価値」と呼ばれます。状態価値は得られた報酬の和の期待値をとったものです。Actorで学習させるQ(s,a)は状態がsのとき行動aが持つ価値を表し「行動価値」と呼ばれます。

 

A2Cはその名に含まれているアドバンテージをCriticの学習に用います。アドバンテージとは、行動価値から状態価値を除いた値で、純粋に行動の価値を表す値です。行動価値は状態への依存が大きいため、行動だけの評価を行うためにアドバンテージを導入します。

 

A2Cではこの他にもCriticの学習のためにいくつかのエントロピーの導入や学習の効率化のための分散学習など様々な手法が取り入れられています。

 

実験

モデル

レイヤー 出力 メモ
Input 32*W*H 状態の種類*高さ*幅
Conv. 32*W/2*H/2 3*3 Kernel, stride 2, ReLu
Conv. 32*W/4*H/4 stride 2, ReLu
Conv. 32*W/8*H/8 stride 2, ReLu
View. (32*W/8*H/8)  
FC1. 64 ReLu
FC2. 24 Softmax
FC3. 1  

入力として状態:(建物の種類)×(H:高さ)×(W:幅)を使います。出力はActorで用いる行動24種とCriticで用いる価値の2種類になります。

最適化手法にはAdaDeltaを使いました。

結果

報酬に人口を用いた場合の学習結果は以下のようになりました。

f:id:Ak1x:20190816210411p:plain

報酬に人口を用いた場合の結果



報酬に多様度を用いた場合の学習結果は以下のようになりました。

f:id:Ak1x:20190816210512p:plain

報酬に多様度を用いた場合の結果



人口を用いた場合は報酬が4万、すなわち最大4万人程度の都市を構築するエージェントを作成できたことがわかります。一方、報酬に多様度を用いた場合は全く学習が進まず、実際にエージェントを動かしても一つも建物は生成されませんでした。

 

報酬に人口を用いた際に生成されたエージェントを実際に動作ささせた動画が以下になります。


Micropolis agent test

ゲーム初期に鍵となる発電所・住宅地は設置されており、工業地も生成されていることがわかります。工業地がほとんど生成されていないことや公害がほったらかしになっていることが問題点と言えるでしょう。

 

終わりに

ここまで読んで頂きありがとうございます。取り組んだことすべてを描き切ることはできませんでしたが、全体像が伝われば幸いです。

近年強化学習は非常に勢いがあると感じています。OpenAI FiveやDeepMindのAlphaStarなど興味深い研究ばかりです。私も強化学習を取り組む者の端くれとして一層研究に励めたらなぁと思います。

参考文献

2019年になって日本語の強化学習の文献がどんどん出てきているように思います。

[1] これからの強化学習, 牧野貴樹 他著, 森北出版, 2016. 

第1部は易しいですが、第2部以降からグッと難易度が上がると思います。

[2] Pythonで学ぶ強化学習, 久保隆宏, 講談社, 2019

今年出版された本で、9月にもう改訂版が出るんだとか。必要十分な説明と豊富なコードを備えています。

[3] 強化学習, 森村哲郎, 講談社, 2019

理論は裏切らない。

これからの強化学習

これからの強化学習

  • 作者: 牧野貴樹,澁谷長史,白川真一,浅田稔,麻生英樹,荒井幸代,飯間等,伊藤真,大倉和博,黒江康明,杉本徳和,坪井祐太,銅谷賢治,前田新一,松井藤五郎,南泰浩,宮崎和光,目黒豊美,森村哲郎,森本淳,保田俊行,吉本潤一郎
  • 出版社/メーカー: 森北出版
  • 発売日: 2016/10/27
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (3件) を見る
 
機械学習スタートアップシリーズ Pythonで学ぶ強化学習 入門から実践まで (KS情報科学専門書)

機械学習スタートアップシリーズ Pythonで学ぶ強化学習 入門から実践まで (KS情報科学専門書)

 
強化学習 (機械学習プロフェッショナルシリーズ)

強化学習 (機械学習プロフェッショナルシリーズ)