nikkie-ftnextの日記

イベントレポートや読書メモを発信

イベントレポート | Global Azure Bootcamp 2018@Tokyo #jazug

はじめに

だんないよ、nikkieです。
4/21は「Global Azure Bootcamp 2018」に参加してきました。
4/22のブログ執筆時点で確認したセッションスライドやLTスライドをまとめます。
セッション中のメモをレポート記事にするときに参照する意図です。
(直近の優先事項が完了次第、聴講セッションにフォーカスしたレポートを公開する予定です)

 

勉強会の概要

Global Azure Bootcamp 2018@Tokyo - connpass

Global Azure Bootcampとは?

Global Azure Bootcampとは世界中の Azure コミュニティが世界180ヶ所以上で一斉に開催するMicrosoft Azureのコミュニティイベントです。

 
Azureは業務で使うことが多いです。
自分の経験がVMやAzure MLなど一部の分野に偏っているので、
Azureの全体感がつかみたくて参加しました。
 

感想

  • LogicApps、気になります!
    コーディング不要で色々なサービスを連携させられるそうなので、ライフハック的なことができそう。
    好きなアニメの公式アカウントのツイートを見逃し、こんなイベントあったのか。。orzってなることが多いので、
    定期的にチェックしてSlackに通知する機能がほしかったところ。
    課題解決優先でLogicAppsでまず組み、素振りとして自力実装という進め方でやってみよう。
    LogicAppsで扱えるものの一部にAzure MLやCognitive Servicesがあり、
    いままで触っていたのはAzureのごくごく一部なんだと実感。
  • アーキテクチャセンターのドキュメント確認したことない状態で業務でAzure触ってきたとか恐ろしや。
    読めばAzureをもっと効果的に使い倒せそう
  • 月100ドル、3ヶ月分のクーポンいただけるんですね! LogicApps試します!!
    大盤振る舞いにただただ感謝 人

 

聴講したセッションのスライド

www.slideshare.net

 

www.slideshare.net

 

www.slideshare.net

 

www.slideshare.net

 

 

聴講していないセッションのスライド

www.slideshare.net

 

www.slideshare.net

 
 

LTスライド

www.slideshare.net

 

speakerdeck.com

 

speakerdeck.com

 

kamoppusan.hatenablog.com

 

s2terminal.hatenablog.com

 

▼seosoftさんのLTで言及されていた「Cognitive Services と Bot Service で作る業務アプリケーション (2018 年 4 月版)」のダウンロードリンク

http://download.microsoft.com/download/9/7/8/978ED1D1-A670-47A7-B478-5C0FEC542204/Hands-on-12-CognitiveServices_and_BotService_for_InternalApp.pdf

 

運営の皆さま、登壇者の皆さま、参加者の皆さま、
貴重なお話とそれを聞く機会をありがとうございました。
長時間のブートキャンプお疲れさまでした。

イベントレポート | (第87回)Python mini Hack-a-thon #pyhack

はじめに

だんないよ、nikkieです。
土曜日は#pyhackに参加してきました。(3月は#rettypy優先したので2月以来の参加)

 

勉強会の概要

(第87回)Python mini Hack-a-thon - connpass

この勉強会について

基本的に毎月開催です。スプリントのゆるい版みたいな感じで各自自分でやりたいことを持ってきて、勝手に開発を進めています。参加費は無料です。 初めての方も常連さんもぜひご参加ください。

独学している身としては猛者同士のちょっとした会話からも勉強できる場です。
なるべく毎回行きたいなあと思っています。

取り組んだこと

『仕事ではじめる機械学習』の7章(映画のレコメンドの章)を写経しました。
1月から3ヶ月ほど弊社にてレコメンドシステムの開発に携わっていたので、
振り返って総括するために写経することにしました。(どうやるべきだったか知りたかった)
開発ではAzure Machine LearningでMicrosoft謹製のレコメンドアルゴリズムを使って実装したのですが、
レコメンド予測モデルがブラックボックスすぎるので理解を深めたいという気持ちもありました。
 
仮想環境作って写経スタートと思いきや。。
pip installに失敗するエラーが発生。(pipのバージョンも上げられず、原因不明)
かしゅーさんに診ていただきつつ、Python3.6系を導入してpip installはできるようになりました。
かしゅーさん、ありがとうございました!
venvに代えてvirtualenv使おう。pipのバージョンアップも自動で適用されるところに魅力を感じる。
 

写経

  • 推薦システム構築に使うライブラリ:fastFM
  • ユーザIDと商品IDはカテゴリ変数として扱う。(→One-hot Encoding)
  • データは3種類
    ユーザ情報(例:ユーザID=U001の名前はnikkie、男性、、)
    レーティング情報(例:ユーザU001が映画M12345を☆5(=最高評価)と評価)
    映画情報(例:M12345はタイトルが『さよ朝』、公開が2018年、、)
  • pandasを使ってデータを探索
    pd.mergeでDataFrameの同じ名前の列同士を内部結合。
    古い映画ほど評価データの数が多い。(古い映画ほど多くの人が評価)
    映画ごとの平均評価を出す上では、評価の数が100以上のようにフィルターをかける必要あり
    ユーザ1人あたりの評価した映画数の中央値は65本(平均が106本なので、数多く見ている人に引っ張られている)
    ユーザ1人あたりの評価値の平均は25%〜75%が☆3台:(▲)
    →平均評価が高い映画を評価しているユーザの属性など、もっと探索は深められそう
  • アルゴリズムMCMCを採用(ハイパーパラメタが少ないのが長所)
    レーティング情報だけを用いる
    イテレーション回数を300までで変化させ、平均二乗誤差やハイパーパラメタの様子を見ると、100回程度で収束している
    行列を圧縮する次数rankを変化させて平均二乗誤差(性能指標)を見ると、rank=32以降は収束している(ユーザの映画への評価値を予測しているので、平均二乗誤差が求まる)
    (▲)から、ユーザごとに平均評価値にばらつきがあったので標準化する
  • イテレーション回数とrankが決まった後は、ユーザ情報と映画情報も加える
    加える特徴量の数パターン用意し、平均二乗誤差を比較する
    →ユーザの年齢、性別、評価した年、映画の公開日を加えるとよさそう
  • pandasでの処理の書き方勉強になる
    movie_stats = lens.groupby('title').agg({'rating': [np.size, np.mean]})
    list(filtered_lens.drop('rating', axis=1).T.to_dict().values())
    lens['date'].apply(str).str.split('-').str.get(0)
  • Cell 21に不要なコードありませんか?
    (不要と思う点1箇所目)同内容の繰り返し
    lens['year'] = lens['date'].apply(str).str.split('-').str.get(0)
    lens['release_year'] = lens['release_date'].apply(str).str.split('-').str.get(2)
    (不要と思う点2箇所目)y_predに代入していないfm.fit_predict、不要じゃないでしょうか?
    fm.fit_predict(X_mf_train, y_mf_train_norm, X_mf_test)
    MCMCでは学習と予測をセットで行うfit_predictメソッドしか提供されていないそうなので、
    上記の箇所とy_predへの代入の箇所で全く同じことを重ねて行っている認識。
    指摘箇所を削ったところ、結果は変わらずに待ち時間は減った(ただし体感)。
  • p.156に誤植発見(Cell21が正しい)
    誤:y_mf_train_norm = scaler.fit_transform(np.array(y_mf_train)).ravel()
    正:y_mf_train_norm = scaler.fit_transform(np.array(y_mf_train).reshape(-1, 1)).ravel()
  

感想

人に説明できるレベルでは理解できていない感じ。もう少し取り組んでみる。

pandasの書き方は大変勉強になりました。使いこなせるよう自分でもこのデータ探索してみよう。

fastFMはチュートリアルがあるようなので、手を動かしてみたい。

Tutorials — fastFM 0.2.10 documentation

Azure MLのレコメンドのサンプルデータをfastFMで動かして
同じ結果を得られることを確認してはじめて脱ブラックボックスかなと思う。

 

nobolisさんの三角グラフ、画像をRGBで表すのによさそう。

 

運営及び参加者の皆さま、1日どうもありがとうございました!

 

LT報告 | 『Djangoにモザイクアート』 @みんなのPython勉強会#34 #stapy

はじめに

だんないよ、nikkieです。
みんなのPython勉強会#34でモザイクアート作成のソースコード
Djangoで動かせるようにしたというLTをしてきました。
イベントレポートは近日中にあげます。

 

LT報告:Djangoにモザイクアート

gitpitch.com

かいつまんで言うと。。。

  • モザイクアートとは:画像を寄せ集めて別の1枚の画像を作る(下の関係資料参照)
  • これまでPillowという画像処理のライブラリを使ってPythonで実装していた。今回それをDjangoで動かしてみた。
  • Djangoは初めてだったので、まずモザイクアートの一覧を表示することを目標にし、徐々に機能を追加していった。
  • 表示機能はDjango Girls Tutorialを読み替えながら進めた。テンプレートの<img>タグを動的に作る際に get_static_prefix を使うのがポイントだった。
  • 機能追加としてモザイクアートが作成できるフォームボタンを実装した。
    (押すとモザイクアートが作成されてから、モザイクアート一覧が再表示される。そのため作ったばかりのモザイクアートが見られる)
  • フォームにモザイクアートにする画像を選べるプルダウンを実装した。フォームは引き続き機能追加していく
  • Djangoを初めて触った感想としては「賢い」に尽きる。設定不備があるとき、実行するべきコマンドがコンソールに出力される
  • Django Congressにいけなくなった人がいらっしゃったらチケット譲っていただけるとうれしいです。

 

関係資料

speakerdeck.com

 

感想

Fintech回にDjangoネタを持っていったのは選択ミスのような気もしましたが、
Pillowの頃から知っている方からフィードバックもいただけ、ありがたかったです。

NaoY_pyさんのPyCon JPスタッフ募集LT、コミュニティに多少なりとも返していきたいので応募考えてみよう。

[ GitPitch ] NaoY-2501/GitPitch-Slides/master

LTされたアプリ、UIまわり(ルビの出方など)がきれいだった!
3万語をレベル分けして辞書作ったのはすごすぎる。
ディープラーニングで5万枚の画像を一人でアノテーションして、誤差5.1%達成した話を思い出す)

【新感覚】辞書を引かずに英語がサクサク読めちゃうアプリ『英読』がすごい!

 

stapy運営の皆さま、出席者の皆さま、LTの機会をいただきありがとうございました。
100人参加者の場でLTできる機会はそんなにないので、貴重な機会です。

継続してLTできるよう個人開発を頑張ります。

イベントレポート | 第26回Pythonもくもく会 #mokupy

はじめに

だんないよ、nikkieです。
#mokupyに行ってもくもくしてきました。

 

勉強会の概要

第26回 Pythonもくもく会 - connpass

この勉強会について

主にPythonに関するやりたいことを各自持って来て、進めていく感じのゆるい会です。 もくもく開発をして情報共有したり、交流を深めることができればと思っています。 是非お気軽にご参加ください。(Python初心者の方でも大歓迎です!)

 

取り組んだこと

来週の#stapyでLTしようと、「Djangoにモザイクアート」を進めていました。

  1. モザイクアートにする画像を指定するフォーム作成
  2. フォームを動かすためにモザイクアートのソースコード修正
  3. LT準備(スライドに盛り込む項目考える)

 

フォーム作成:済

Django Girls Tutorialには「Django フォーム」のセクションがありましたが、
フォームからDBにレコードを入れたいわけではないので、HTMLタグでformを作りました。
(今にして思うとCakePHPみたいなフォームヘルパーがあるのか調べてみればよかったな)

やりたいことはプルダウンからモザイクアートにしたい画像を選択して
サブミットボタンを押すとその画像でモザイクアートが作成されるようにすることです。

フォームのactionにURLが紐づくビューのメソッドには
request.POSTという形式でPOSTの内容が渡ってきます。
指定された画像の取得は意外と簡単でした。(request.POSTをdictのように扱えばよい)

(余談)プルダウンの内容は決め打ちにしたのですが、
ビューでモザイクアート対象画像の一覧を取得、
それをテンプレートに渡し、テンプレート内でfor文でプルダウンのタグを作る。
これで動的なプルダウンが実現できるんじゃないかと帰り道に気づきました。

 

モザイクアートのソースコード修正:済

新たな技術的負債を発生させながら、内在する技術的負債に取り組んでいました。。

今回返済した技術的負債は、モザイクアートにする画像と、
作成したモザイクアートのファイル名をソースコード内に直接書いているというものです。
以下のように修正しました。

  • モザイクアートにする画像は引数で渡せるようにする
  • 作成したモザイクアートはファイル名に日時情報を入れて区別できるようにする
    (作成したモザイクアートが全て同じファイル名だとDjangoで一覧にしたときにまずい。モザイクアートどうしは区別する必要あり)

前者の修正は既に終わっていたため、もくもく会中は後者の作業が主となりました。

Bugfix/#21 モザイクアートのファイル名の区別 by ftnext · Pull Request #24 · ftnext/mosaic-art-python · GitHub

3パターンのモザイクアート作成処理が統合できていない
(平均の色を使う場合、中央の色を使う場合、一番使われている色を使う場合それぞれのファイルが存在している)
という超弩級の技術的負債(DRY原則違反)がソースコードにあります。
今回の修正も同一の関数をやむなく各ファイルに埋め込む形になってしまいました。。

この負債を早く返済しないとソースコードがメンテナンスしにくくていけないです。。
(釈迦に説法だと思いますが、DRY原則マジで守りましょう)

本日の作業後のDjangoにモザイクアートのソースコードはこちらです。

GitHub - ftnext/mosaic-art-on-django at develop

 

LT準備:途中

急ぎGitPitchでスライドを作り、成果発表で練習LTしました。
staticフォルダの配置の情報が2つ見つかったという質問を盛り込んだところ
好みの問題だが、プロジェクトの下に1つだけ設けることが多いという回答をいただきました。
独学の身には参考になります。ありがとうございます。

3日まで日がないので、明日完成度80%まで持っていきます。

 

感想

お昼のときにPythonもくもく会にはそれぞれ色があるという話を聞いてなるほどと思いました。
個人的には

  • #pyhack:もくもく中、猛者の会話が多いが、勉強になるのでありがたい。作業しつつも耳は研ぎすませている状態がベター
  • #rettypy:もくもく中の会話は中程度。最初の自己紹介で困っていることを共有するので教え合いやすい
  • #mokupy:もくもく中の会話が少なめ。皆さん作業に没頭している感じ

というようなグラデーションかなあと思います。それぞれ色があるのも私は好きです。

 

FlaskとKerasでNBLのプレーヤー分類を作った方がいらっしゃいました。

The Keras Blog - Tutorials

こちらかな? pillow使ってるようなので興味あります。

 

紹介(宣伝?)されたDjango連載など時間を作って読まなくちゃ。

 

もくもく会関係者と出席者の皆さま、本日はありがとうございました。1日お疲れ様でした。

イベントレポート | MANABIYA DAY2 2限「2018年のWeb標準」#MANABIYA

はじめに

だんないよ、nikkieです。
MANABIYAはもう1週間前なんですね。
2日目のメルカリ 泉水さんによる「2018年のWeb標準」の聴講メモです。

 

講義の概要

【国内最大級のエンジニア向け技術祭典】MANABIYA -teratail Developer Days-

進化を続けるWebプラットフォーム、
それを支えるのがHTML、CSSJavaScriptなどをはじめとしたWeb標準です。
本セッションでは昨今のWeb標準の変遷を振り返ると共に、
今後のWebアプリケーションの動向を予測します。

機械学習に取り組む前はサーバサイドに携わっていたのでWebの話を聞きに行きました。
屋上から移動してきたら教室はすごい人数でしたが、床枠で聞けました(笑)

2018年のWeb標準

speakerdeck.com

私のまとめツイートを掘り下げていきます。

 

Service Worker
  • ブラウザにインストールされるWeb Worker
    キャッシュがあったらキャッシュを返す、なかったらネットワークへ。
    オフライン対応が注目されるが、それだけではない
  • JSで実装できるネットワークプロキシ
  • オンライン復帰を検知できる
    チャットアプリなどでユーザには送信完了と表示し、裏でネットワークが復旧したら送る
  • プッシュデータ受信できる
    生放送アプリでの利用例 ↓

developers.cyberagent.co.jp

Service WorkerはPWA(Progressive Web Apps)にも寄与する。

Chromeは対応済み。SafariはiOS11.3から。FirefoxMicrosoftもPWA対応に追従。

 

Web Components

HTML要素を自分で定義できる。CSSのスコープを汚染しない

  • Custom Elements:HTML要素を自分で定義できる
  • Shadow DOM:カスタムHTML要素がグローバルスコープに出ないようにする
  • ES Modules:再利用のための外部ファイル(export、import)

Web Componentsを使えば、ビルドがシンプルになる。(Reactなどのライブラリは多段ビルドを要求する)

描画パフォーマンスが気になる場合はlit-html。差分描画を担ってくれる

github.com

ChromeSafariが対応しているのでモバイルWebでは使える。

泉水さんブログ:

1000ch.net

 

Web Payments

ECサイトでクレジットカード情報を扱わない決済を可能にする。(スライド55, 56)

  • ECサイトから決済代行業者の画面に遷移する従来のユーザ体験と比べてストレスレス。
    トークンはカード情報ではないので、万が一漏れてもリスクは小さい
  • フォームUIの統一=決済のユーザ体験を統一

ChromeとEdgeは対応済み。SafariはiOS11.3から

参考:

クレジットカード取引におけるセキュリティ対策の強化に向けた実行計画2017(「実行計画2017」)を取りまとめました~国際水準のクレジットカード決済環境の整備を進めます~(METI/経済産業省)

 

感想 

久々にWebの話を聞いたら浦島太郎状態でした。こんなに進んでいるとは。。

最近PWAの動きが出てきているのはSafariがService Worker対応するからなんですね。
Web Componentsは触ってみたいです。(GitPitchにも載せられたりしないかな)
Web Paymentsを聞いて、AppleGoogleを通さずに支払いを受ける仕組みを作ろうとしているという話(2017年5月のHTML5感。)を思い出しました。

積読リスト

Service Workerってなんなのよ (Service Workerのえほん) - Qiita (2017年1月なので古いかも)

ライブラリを使わずここまでできる!Web Componentsで近未来のフロントエンド開発 | ヌーラボ

 

泉水さん、並びにMANABIYA運営スタッフの皆さま、
貴重なお話とそれを聞く機会をありがとうございました。

LPIC Lv.1学習メモ | パッケージ管理(rpmとYUM)

はじめに

だんないよ、nikkieです。
パッケージ管理の整理の続きとして、
RPMパッケージを管理するrpmYUMについてまとめました。

注意:動作については未確認です。vagrantcentos環境で確認予定です。

rpm

Linux - RPMおよびYUMパッケージ管理の使用

一般的にはYUMが使われ、rpmはあまり使われないと想定しています。

引数
用途
例文
パッケージファイル名 パッケージインストール
rpm -i nmap-5.51-2.el6.i686.rpm
(注:wgetでダウンロードしてある前提)
 
パッケージインストール
(詳細情報表示:v、進行状況表示:h)
rpm -ivh nmap-5.51-2.el6.i686.rpm
 
パッケージインストール(依存関係無視)
rpm -ivh --nodeps emacs-23.1-21.el6_2.3.i686.rpm
 
パッケージアップグレート
インストールされていない場合は新規インストール
rpm -U nmap-5.51-2.el6.i686.rpm
rpm -Uvh nmap-5.51-2.el6.i686.rpm
 
パッケージアップグレート
インストールされていない場合は何もしない
rpm -F nmap-5.51-2.el6.i686.rpm
rpm -Fvh nmap-5.51-2.el6.i686.rpm
パッケージ名 パッケージ削除
rpm -e nmap
 
パッケージ削除(依存関係無視)
rpm -e --nodeps emacs
 
指定したパッケージからインストールされたファイルを検査
rpm -V nmap
なし
インストールされている全パッケージについて
インストールされたファイルを検査
rpm -Va
照会モード(-q)
引数
用途
例文
なし
インストール済み全バッケージ一覧表示
rpm -qa
ファイル
ファイルがどのパッケージからインストールされたか表示
rpm -qf /usr/bin/nmap
パッケージ名
パッケージがインストールされているか照会
rpm -q nmap
 
パッケージの情報表示
rpm -qi nmap
 
パッケージに含まれるファイルの表示
rpm -ql nmap
 
パッケージの依存関係表示
パッケージファイル名
インストール前のパッケージの情報表示
(インストール前にバージョン情報を知る)
※-qiと同じ情報
rpm -qip nmap-5.51-2.el6.i686.rpm
 
インストール前のパッケージに含まれるファイルの表示
※-qlと同じ情報
rpm -qlp nmap-5.51-2.el6.i686.rpm

 

YUM

Linux - RPMおよびYUMパッケージ管理の使用(YUMツールの紹介)

DebianパッケージのAPTに相当するのがYUMという認識です。

引数
用途
例文
なし アップデート対象のパッケージリスト表示
yum check-update
 
インストールされている全パッケージをアップデート
yum update
 
リポジトリの全パッケージ情報とインストールの有無を表示
yum list
パッケージ名
パッケージのインストール
yum install nmap
 
指定したパッケージをアップデート
yum update nmap
 
パッケージのアンインストール
yum remove nmap
 
パッケージ情報を表示(インストールされていないパッケージについても表示可能)
yum info nmap
キーワード
キーワードを含むパッケージの検索
yum search nmap

 

終わりに

頭の中は整理できたと思うので、次は手を動かす時間ですね。
ちなみに、dpkgとAPTの整理はこちらです。

nikkie-ftnext.hatenablog.com

以下の教材で学習しています。(ネット上のリソースは必要に応じて使っています)

 

イベントレポート | MANABIYA DAY1 2限「DeNAにおけるAIの取り組み」#MANABIYA

はじめに

だんないよ、nikkieです。
MANABIYA 1日目のDeNA 内田さんによる「DeNAにおけるAIの取り組み」の聴講メモです。

 

講義の概要

【国内最大級のエンジニア向け技術祭典】MANABIYA -teratail Developer Days-

DeNA AIシステム部では「先端AI技術を活用して事業を成功に導くこと」をミッションとし、
AI研究開発と事業貢献の両立を目指して様々なビジネスでのAI活用に取り組んでいます。
本セッションでは、コンピュータビジョン、自然言語処理、強化学習の分野を中心に、
現在取り組んでいる新たな価値提供へのチャレンジについて紹介します。

機械学習に取り組んでいるので、興味を持って聞きに行きました。
事前知識として、オセロニアのバランス調整を強化学習を使ったAIで行っていることは知っていました。
(先日のrettypyで強化学習の話題になったときに教えていただいた) 
強化学習をバランス調整に活用。『逆転オセロニア』が目指す、ゲーム開発の近未来 – フルスイング

 

DeNAにおけるAIの取り組み

講義後の私のまとめツイートはこちら。項目ごとに掘り下げます。

組織

研究開発と事業を両立させていく
研究開発の目標はサービスへのコミット 論文を書くことが目的ではない
 研究開発の人間がサービスに入っていく
 ビジネスの立ち上げから研究開発の人間がプロジェクトチームに入っていける

先端技術のキャッチアップのために

  • 情報発信、社外発信
    ・社内勉強会 →ブログ見つけました:アーカイブ - Technology of DeNA
    ・国際学会聴講
    ・30%の工数はkaggleに取り組める kaggle実績は分析者の実績の証明という考え
     データサイエンティストは「kaggle枠」と呼ばれる ありとあらゆる手段でKPIを達成する
    ・今後:AIプロジェクトマネジメント(AI研究開発のマネジメントとは)
      ML Ops 安定したモデルのアップデート、安定稼働
  • 論文の再現検証のリソースが供給される
  • キャッチアップができなくならないようにアサイ

 

ドライバーモニタリング(コンピュータビジョン)

www.slideshare.netこちらのスライドの内容でした。

基礎タスクは画像分類。畳み込みニューラルネットワーク(CNN)により実現

CNNは2015年のResNetがデファクトスタンダード
内田さんがまとめたCNNのサーベイ論文はこちらだと思います。

mprg.jp

特徴マップ
4×4の例
(1,1)の特徴ベクトルは元の画像のある範囲(1,1)〜(3,3)の特徴を集約した情報が入る
 信頼度が0.9以上で物体がある→(1,1)を見てどんな物体か=1クラスの物体検出
+どういうクラスかという次元を追加(C次元)→これは車、人と検出できる(Cクラスの物体検出)
:ランドマーク検出(目や鼻などの特徴点の検出)
 まず顔があるか検出→ランドマーク座標を見る

実応用のためにはニューラルネットワークの高速化が重要
 枝刈り、畳み込みの分解、蒸留、早期終了(スライド21)

危険運転の前にアラートを出したい 例:「運転が荒い」→行動変容
どういう運転をしているのかは外の環境+ドライバーの状態

  • ドライバーの状態・・・ランドマーク検出:どこに目があるか→顔の向き
  • 外の環境・・・走っているレーンやまわりの車の情報
     画像のどこにレーンがあるか1次元(点)で出す

スマホやエッジデバイスで動かすには軽量化が必要。ここを頑張ったそうです。

 

オセロニアのバランス調整(強化学習)

www.slideshare.netこちらのスライドの内容でした。

ゲームの新鮮さを保つために、キャラクターやスキルを定期的に導入する。
熟練プランナーが設計するが、テストしてみないとバランスが崩れているかわからない。
→そこで、ゲームAIを使ってバランス調整

取り組んだこと:

  1. 教師あり学習
    そもそも教師ありとして学習できるのか検証。
     教師あり学習はDQNに着想。
     盤面を画像としてCNNに入れる。
     盤面の特徴ベクトルと特徴量の組合せ
    学習できそうとわかったので先に進んだ。
  2. 表現学習
    one-hotベクトルではキャラクター増えたら学習し直し
    似たようなキャラクターが同じようなベクトルになるような表現学習
    (=固定長のベクトルで表現できるようにした)
  3. 強化学習
    自己対戦を繰り返して強くなれるか
  4. 先読み機能
    手を打った後の盤面をランダムにプレイアウトし、どのくらいの確率で勝つかを打つ手の価値とする

強化学習はゲームが一番適用しやすい。
ただし、ゲームに限らず応用しようとしているとのこと。

 

感想

1限の染谷さんに続いてkaggleへの言及がありました。やっぱりkaggleなんですね!
DeNAのチーム体制は先端技術までカバーできているので、
どんな要望にも対応できそうな理想的なチームだと思います。


ここまでの体制を作ってもキャッチアップと案件のバランスには気を使うようなので、
一介のエンジニアが空き時間にディープラーニングを勉強したとしても
簡単には業務で利用できるようにはならないと覚悟したほうがよさそうです。
大変というのはやらない理由にならないですし、心躍る分野なので
私は取り組んでみようと思います。
当面の私の課題は、kaggleでの探索的データ解析の勉強(優先度高)と
ディープラーニングのキャッチアップになりますね。

内田さん、並びにMANABIYA運営スタッフの皆さま、
貴重なお話とそれを聞く機会をありがとうございました。