セーターの備忘録

大学編入やIT関連の内容を記していく予定です

2021年を振り返る


例年通り1年を振り返ろうと思います。

今年なにをしたか

  • 引っ越しました
  • 転職しました
  • いろいろ旅行しました
  • 資格取得しました
  • メタバース始めました
  • 記事6本書きました
  • 1年の目標と四半期ごとの目標を立てて行動しました

それぞれの話

引っ越しました

後述する通り転職することになり、併せて引っ越しました。
前の居住地でも通勤可能だったのですが、新しい職場の家賃補助が出る物件の制約の関係で引っ越しました。
補助が出るとはいえ家賃が非常に高いのがネックになっています。
給料上げるとかどうにかしてお金の問題どうにかしたいです。。。

転職しました

いわゆる大手企業からベンチャー企業へ転職し、SRE エンジニアから AI エンジニア (データサイエンティスト) になりました。
詳しい経緯は↓の記事に書いています。

新卒入社した会社を退職しました - セーターの備忘録

かなり自由な環境で好き勝手にやらせてもらっており、気は楽なのですが技術力の向上という意味ではちょっと刺激が足りないなと感じています。
また、「これ新人 AI エンジニアの仕事じゃなくね?」というような仕事を振られることも多く、どうせやるなら成果アピールを上手く出来るようになりたいなと考えています。
データサイエンティストや AI エンジニアも募集しているので、ぜひつよつよエンジニアの方に入社していただいてチームリードしてもらったり議論させて欲しいです。

いろいろ旅行しました。

  • 銚子 (千葉)
  • 沼津・伊豆・朝霧・袋井・磐田 (静岡)
  • 盛岡・遠野 (岩手)
  • 秩父・川越 (埼玉)
  • 福岡
  • 大阪・京都

コロナ禍ではありましたが、夏までは一人で、ワクチン接種後は友人とも出掛けたりしました。
また、新しい職場ではちょうど関わっているプロジェクトで出張があり、そこで出掛けたりもしました。
来年もいろいろな場所に行けたらなと思います。

資格取得しました

データサイエンティスト検定というのが始まるというのを聞いたので、興味本位で受けてみました。

第1回データサイエンティスト検定を受験しました - セーターの備忘録

メタバース始めました

12月頭に Oculus Quest 2 を購入し、VRChat を始めました。
友人や向こうで出会った方々にいろいろ教えていただき、楽しむことができています。
また、理系集会やバーチャル学会など、勉強になるイベントも多く、学ぶことが多いです。

バーチャル学会2021に参加してきました - セーターの備忘録

記事6本書きました

この記事も含めて、今年は6本書くことができました。
そのうちの1本はアドベントカレンダーとして書いています。
ただ、12月に偏っているので、来年は2月に1本くらいは書いてアウトプットしていきたいなぁと思います。
また、Qiita Organization で自社に登録されたので、こっちも書いていけたらなと思います。

1年の目標と四半期ごとの目標を立てて行動しました

Twitter で1年の目標を立て、それを基に四半期ごとの目標も立てて、成果を確認しながら生活しました。
常に目標があるので、多少は生活にメリハリがあって良かったのかなと思います。

まとめ

今年は新卒入社2年目でさっそく転職するという大きなイベントがありましたが、なんとか楽しくやれています。
ただ、最近 (特に3Q) はあまり機械学習関連のインプット・アウトプットを出せておらず、危機感を覚えています。
また、仕事を通じて、機械学習の実行環境としてのクラウドの知識も全然足りないなと思い知らされました。
来年は学会とか技術イベントでの登壇に挑戦したいなと考えているので、そのためにもインプット・アウトプットを積極的にできるよう適度に頑張っていきたいと思います。

バーチャル学会2021に参加してきました

12月18日に行われたバーチャル学会 2021 に聴講者として参加してきました。どんな学会で、どんな感じだったのかまとめます。

バーチャル学会とは

バーチャル学会は、VRChat や Cluster などメタバースを主会場として実施される学会で、2019年から開催されており、今年で3回目になります。詳細は HP に載っているので、そちらを読んでみてください。

VirtualConference2021

今年は口頭発表、ポスターセッション、オーガナイズドセッション、基調講演の4つのイベントが10時から22時まで1日かけて行われ、様々な発表が行われていました。

どんな発表があるの?

発表は VR に関連するものだけではなく、下に示すように多岐にわたる分野のテーマが取り上げられていました。

VirtualConference2021 - ポスター発表

ボイスチェンジャーや楽曲生成など音情報処理に関するものや、機械学習やログ解析といった情報科学に関するもの、HMD のリハビリへの活用や VR の医学研修での活用といった医療に関するもの、ソーシャル VR 国勢調査やファントムセンス実態調査といったアバターに関するものなどは私も興味を持って聴きに行きました。昨年は機械学習に関するセッションもあったようなのですが、今年は関連する発表が少なかったのが個人的に残念でした……。

f:id:resweater:20211218230136j:plain
ポスターセッションの様子1

どんな雰囲気だったの?

口頭発表は今年は1人3分で発表する形を取っていました。LT っぽい感じで概要を話し、詳しくはポスターセッションで~という話をする方が多かったです。聴講者としては、ここで気になる発表に目星を付けておいて、ポスターセッションで詳しく聞く、という形でした。質疑応答の時間もないため、結構あっさりとした雰囲気を感じました。

ポスターセッションは各テーマごとに分類されて30分のコアタイムが設けられており、その時間内に自由に議論ができるというような形でした。30分で全部の発表を聴きに行くのは不可能なので、特に聴きたいものだけに絞って話を聴きに行きました。議論が盛り上がるとあっという間に時間が来てしまって、充実感を感じるセッションでした。このご時世に (実質) 対面で集まって議論できるという環境の素晴らしさを感じました!

f:id:resweater:20211218224256p:plain
ポスターセッションの様子2

オーガナイズドセッションと基調講演の一部は今回予定があって参加できなかったのですが、テーマに沿って話が繰り広げられ、かなり盛り上がったようです。

クロージングで流れたまとめ動画がかっこよかったです!雰囲気こんななんだ~と見てもらえれば嬉しいです。

まとめ

最近話題のメタバースで実施される学会ということで、どんな感じなんだろうと思いながら参加しましたが、議論なども盛り上がり、楽しい学会でした。オンライン学会はどうしてもシームレスなやり取りが難しいという課題がありますが、そういった課題を解決できる方法の一つとしてメタバース開催は良いのではないかと思いました。

バーチャル学会 2022 の開催も決定したようなので、来年は自分も何か発表できるものを作りたいなぁと思いました。
運営や発表者の皆さん、本当にお疲れ様でした!

AIエンジニアと資格の話

スキルセットを整理していて、資格についていろいろ考えてたので整理がてらまとめます。

AI エンジニアとしての業務範囲

今、自分は AI エンジニアとして働いています。仕事の中では、論文実装からプロダクトに関するお客様への説明まで幅広くやっています。この仕事をしていて、主に以下の辺りの知識が必要だと感じています。

  • 情報技術の基礎知識
  • データサイエンティストとしての3要素 (「ビジネス力・データサイエンス力・データエンジニアリング力)
  • クラウドの知識
  • 論文読解力
  • 英語

取った資格と取れば役に立つ気がする資格

上記した知識を得るために、役に立ちそうな資格をピックアップしました。クラウド関連については、自分は GCP を主に使っているので Google の資格を挙げましたが、AWS を使う人ならそっちの同様の資格でいいかもです。

  • G検定 → 現場レベルだとあまり良い評判は聞かず、資格自体もあまり役に立つ気はしないが、取得のために学ぶ範囲はデータサイエンティストの3要素を広く浅く学べるので〇。特にエンジニアの場合著作権とか法律周りに疎いことが多いので、知っとくといいかも。取得済み。

  • データサイエンティスト検定リテラシーレベル → 同上。どっちかだけでもいいかも。取得済み。

  • Python 認定資格 → これブログとかだとよく書かれてるけど、取ってる人に会ったことない。どんな感じなのか教えて偉い人。

  • 基本情報技術者試験 → 基礎が最低限できてることの証明にはなりそう。ただ、自分みたいに CS の修士とか持ってたらそれが証明の代わりになる気がする。上3つの資格と比べるとここより下に書いたのは資格としての価値もそれなりにあるっぽい。

  • 統計検定2級以上 → データサイエンス力に必要な知識を学べる。データ分析する人はしっかりとした統計学の知識を持ってる証明にもなるのであった方がいいと思う。

  • Google Cloud Associate Cloud Engineer → GCP を扱う上で最低限必要な知識が得られる。

  • Google Cloud Professional Data Engineer → GCP 環境で ML をやるならこの辺まで持ってるといいかも?

  • ORACLE MASTER Bronze → 業務であまり SQL 触らない場合、SQL の知識を証明する意味でも最低限 Bronze は持ってたほうがいいかも?

  • TOEIC → 英語は生涯学習

まとめ

データを扱う人に関連する資格について、個人的な考えをまとめました。年明け以降、必要そうな資格・知識でまだ取ってないものを取っていこうかなと思います。

マッチングAIの特性を考慮したチューリングマシン構築によるマッチングアプリの作業効率化

この記事は 岩手県立大学とか、岩手の人たち Advent Calendar 4日目の記事です。今回は、マッチングアプリに使われているアルゴリズムと、それを踏まえた作業効率化について書いていきたいと思います。

要約

記事の内容をまとめると、こんな感じです。

  • 最近のマッチングアプリには機械学習を含めた優秀なアルゴリズムが使われていて、より最適な相手がレコメンドされるようになっています
  • アルゴリズムが推論しきれない部分について、計算可能レベルまで分解して落とし込んで条件付けすることで、より簡単に最適な相手を見つけられるようになりました
  • 標準化と効率化によって、アプリ疲れが軽減されました

マッチングアプリの仕組み

現在、数多くのマッチングアプリがありますが、中でも国内で利用者数の多い Pairs を例として書いていきたいと思います。

www.pairs.lv

こんなところにマッチングアプリのリンク埋め込むと、いかにも広告が挟まっているみたいですね (笑)

マッチングアプリでは、基本的に以下の手順で異性とマッチングしていくことになります。

  1. プロフィール情報を登録
  2. 検索条件を指定して異性を検索
  3. プロフィールを見て気になった異性に対して「いいね!」ボタンを押す
  4. 相手から「いいね!ありがとう」が返ってきたらマッチング!メッセージのやり取りが出来るようになる

この記事では、2, 3 の異性のレコメンドと「いいね!」を押すべき人について書いていきます。

マッチングAIによるレコメンド最適化の仕組み

条件検索を基にアプリが異性の情報を表示するにあたっては、レコメンドシステムが組み込まれています。
Pairs の場合、シンプルに条件指定したプロフィールの条件に加え、「散歩好き」の男性と「カフェ巡り好き」の女性がマッチングするかもしれない*1、というような推論を含む独自アルゴリズムを構築しているそうです。また、機械学習や深層学習も活用されており、プロフィールや行動データから作成したモデルをスコアリングしたり*2、東京大学大学院の山崎研究室と共同で行動履歴のようなログデータも活用しているようです*1。

*1 「好きかも?」AIで分析 東大と「Pairs」がタッグを組む理由
*2 「検索条件=本当に見つけたい相手」ではない Pairsの検索体験を生み出す工夫と改善

マッチングAIの課題

マッチングアプリに関わらず、様々な場所で使われているマッチングシステムですが、いくつか課題もあります。その中の一つが、カテゴリ化不可データの取り扱いです。
マッチングアプリの場合、得られる情報として主に

① 身長、体型、居住地、趣味、価値観、行動履歴
② 写真

などがあります。
①の情報はカテゴリ化されており、条件検索でもそのままカテゴリ情報として扱うことができます。
一方、②のようなデータの場合、そのままだと「写真」という情報しか得ることができません。特に顔写真は「いいね!」を押す上で重要な判断材料になりますが、検索でも条件でそのまま扱うことはできず、今のところ検索アルゴリズムにも活用されていないようです。

カテゴリ化不可データに対するアプローチの提案

そのままではカテゴリ化ができない画像データに対して、アプローチ方法は2つあると考えています。

深層学習を使う方法 (フィーリング)

1つ目のアプローチは深層学習を活用する方法で、大量の顔写真とそれに「いいね!」を押した人の情報から、利用者が好みそうな顔の人をレコメンドするという方法です。しかしこの方法には2つ課題があります。
1つは利用者目線で考えた際、自分で大量のデータを集めて学習させてそれをマッチングアプリに反映させることは現実的ではないことです。データ収集的にもシステム的にも難しいと思います。
2つ目は深層学習の有名な問題ですが、判断理由がブラックボックス化してしまうため、結局なぜその顔写真の人が「いいね!」を押すべき人として推薦されたのかが分からないということです。これでは、人が直接見て判断するときのフィーリングと変わりません。

条件分岐可能レベルまで分解して条件付け

そこで2つ目のアプローチとして、条件分岐可能なレベルまで分解して条件付けする方法を考えています。
人の顔には複数のパーツ (特徴量) がありますが、自分が最も重要視する (寄与度の高い) 特徴量を選択します。その特徴量に対し、カテゴリ分類をすることによって、条件を策定します。

特に目の形状に関する特徴量は非常に有効と考えています。目の形状の区分には諸説ありますが、例えば12種類に分けることができるため*3、ある程度好みが出ます。また、マッチングアプリに顔写真を載せるときはマスクや手で顔を隠す人が多いですが、目だけは出している人が多いため、使えない (欠損) 特徴量となる確率が低く、有効であると考えています。

*3 目の形の種類をご紹介!丸目・半月目・桃花眼などの特徴は?

チューリングマシンの構築

ここまでの話で、カテゴリ化可能データ・不可データ両方に対する扱う方法をしてきました。まとめると、

  • カテゴリ化可能データ:マッチング AI による処理に任せる
  • カテゴリ化不可データ:条件分岐可能レベルまで分解して条件付け

という形で処理することができます。

また、Pairs の場合、マッチングアルゴリズムに使われていない重要なデータとして被「いいね!」数があります。これは表示されている異性がどれだけ「いいね!」をもらっているかを示すもので、数が多いほどマッチング率が指数関数的に減少していきます。そこで、ここでは被「いいね!」数が300以上の場合、マッチング率は0に近似すると仮定します。

これら3つの処理を合わせて最適化すると、以下のようなチューリングマシン*4を含むフローを構築することができます。

f:id:resweater:20211204155356p:plain

このチューリングマシンにより、自分が行う作業としては表示された異性のプロフィールの一点を見るだけで一瞬で「いいね!」を押すべきかどうかを判定出来るようになります。

*4 チューニングマシン:仮想的な計算機

効率化の成果

今回提案したチューリングマシンでアプリを利用することで、これまでは「写真やプロフィールを読んでいいと思ったから「いいね!」を押す」という作業が必要で、かつフィーリングで選んでいたのが、「顔写真の目だけみて好みの形状とマッチしていたので「いいね!を押す」」というだけの作業に変わり、具体的な根拠を持った選び方に変わりました。
これにより、いちいち考える必要性が無くなって選択基準が標準化されたことから、負担が軽減され、アプリ疲れや脳の疲労による「いいね!」基準のブレが無くなりました。また、確実に自分が好みと思う人を「いいね!」できるようになることで、マッチングした後の「やっぱり好みじゃないかも……」というようなことも低減されました。

まとめ

今回はマッチングアプリアルゴリズムと作業効率化について書いてきました。ただ条件検索で一致している人が出てきてると思われがちなマッチングシステムですが、裏では最新技術がふんだんに使われていて、データ分析の世界が広がっているということを知ってもらえたら嬉しいです。
皆さんによいマッチングがあらんことを!

第1回データサイエンティスト検定を受験しました


9月にデータサイエンティスト検定 (DS検定) のリテラシーレベル試験を受験しました。対策できる期間は短かったですが、やったことなどをまとめたいと思います。

データサイエンティスト検定とは

この検定は、データサイエンティスト協会が2021年9月から開始した、新しい試験です。今回はリテラシーレベルの試験となっており、データサイエンティスト初学者やデータサイエンティストを目指す人向けの内容となっています。詳細は協会の HP を見ていただければと思います。

データサイエンティスト検定™ リテラシーレベル | 一般社団法人 データサイエンティスト協会

勉強方法

HP を見ると分かる通り、試験の範囲がデータエンジニアリングやデータサイエンスからビジネスの内容まで、非常に広範囲に渡っています。また、今回が第1回だったことから、これといった勉強法があるわけでもなく、さらに申し込んだのが試験1ヶ月前で時間がなかったため、苦労しました。
今回は、以下のような流れで勉強しました。実際の勉強時間は15日くらいでした。

1. 「データサイエンティスト基礎講座」の動画視聴

スキルアップ AI 株式会社が DS 検定向けの対策講座を公開しています。

DS検定リテラシーレベル対応 データサイエンティスト基礎講座 | スキルアップAI | AI人材育成・開発組織の構築支援

この動画を10日くらいかけて一通り見て、範囲の内容を確認しました。特に自分はデータ基盤や Hadoop などデータエンジニアリングの辺りが不得意だったため、その部分はノートにメモしたりしながら学習しました。

2. 対策アプリで問題を解く

1 と同じく、スキルアップ AI 株式会社が DS 検定対策に問題を解けるアプリをリリースしています。

最新の試験対策ができる「データサイエンティスト検定™(DS検定) リテラシーレベル 対策アプリ」 | SkillUp AI

このアプリの問題を2日くらいで一気に解いて、間違えたところは3に記す本を用いて確認しながら全問正解できるようにしました。

3. 公式テキストで不明点や苦手な部分の確認

DS 検定の公式テキストも販売されています。

最短突破 データサイエンティスト検定(リテラシーレベル)公式リファレンスブック:書籍案内|技術評論社

テキストには問題も付いているので、問題を解きながら間違えたところや試験直前に不安になった部分について、確認する用途に用いました。

試験結果

試験を受けると、その場で正答率が表示されました (合否は11月頃出るようです)。 やはり苦手だったデータエンジニアリングの部分の点数が低かったですが、8割は超えたので合格しているのではないかなと思っています。

追記(2021/12/02)
11月に合否結果が届き、無事合格していました!

受けてみての感想

自分は AI エンジニアとして働いているので、データエンジニアリングの部分は大丈夫かなと思っていたのですが、解いてみるとビジネスが一番解けてデータエンジニアリングが一番低く、自分の認識が間違っていることが確認できました。また、改正個人情報保護法に関する知識など、普段の業務でも役立つ知識を新しく得ることができたので、受けて良かったなと思っています。

新卒入社した会社を退職しました

2020年に新卒で入社した会社を5月末で退職することになりました。 いわゆる退職エントリになります。 書くかどうか悩みましたが、数年後に振り返れるように、備忘録として残しておくことにしました。

自己紹介

セーター(@re_sweater)と申します。修士卒で新卒2年目になります。大学院では知能システムに関する研究室に所属し、脳波に対して深層学習を用いた研究や、深層学習のハイパーパラメータ最適化に関する研究を行っていました。大学院修了後も、機械学習に関する書籍を読んだりしてちょこちょこ学んでいます。

なぜ入社したのか

新卒で入社した会社は大手IT企業のグループ会社です。修士の頃に参加したデータ分析インターンシップがきっかけで縁ができました。就活ではデータサイエンスや機械学習を活用できる企業で働きたいと考え、そのようなことができる企業を何社か受けました。その中で、この会社であればデータ分析を用いた事業や自社サービスの機械学習を用いた自動化に関する業務に取り組めることを知り、入社することにしました。当時の就活については、以下にまとめています。

resweater.hatenablog.com

何をやってきたのか

新卒で入社後、研修期間を経てデータ分析事業を行っている部署に仮配属されました。ここでは論文を読んで実装したり、商談に同行したりなどいくつかの案件に取り組ませていただきました。メインで取り組んだ案件では、チームで社内賞を頂くこともできました。

本配属では自社サービスの構築・運用・改善といった業務を行っている部署に配属されました。こちらでも複数のタスクに取り組みましたが、中でも大きな案件の一つではこちらもチームで社内賞を頂くことができました。

なぜ転職するのか

転職を決めた大きな理由は、今の部署で経験を積んでいっても自分の望むキャリアを築くことができないと考えたためです。自分はこれまで学んできたデータ分析や機械学習に関する技術を生かせる業務に取り組み、広義的にはAIエンジニアとしてキャリアを築いていきたいと考えています。そのため、配属希望もそのようなキャリアを目指せる部署を志望しました。しかし、配属された部署ではSREに関するエンジニアとして成長していくことはできますが、その中にはデータ分析や機械学習に関する技術はほぼ含まれていません。そのため、この部署に居続けても自分の考えるキャリアは築けないと考えました。

もう一つの理由は、関心のある領域に挑戦したいと考えたためです。自分はこれまでの様々な経験から、「福祉」や「感性」に関連する領域に関心があります。これらの領域に対して機械学習を用いた事業などがあれば、ぜひ挑戦したいと考えており、今回その縁があったため、転職を決めました。

念のため書いておくと、会社がブラックだったとかそういうマイナスな側面は全くないです。扱っている技術はレベルが高く学べることが多くあり、年休取得や給与も新卒としては申し分ない程度に充実していました。それでも、どうしても自分の目指すキャリアとの不一致が出てきてしまったため、転職する形となりました。

転職活動

転職活動は、主に以下のようなステップで行いました。

  1. Wantedlyビズリーチに登録
  2. 関心のある企業をピックアップして優先順位をつける
  3. スカウトメールをもらった企業や自分から選考依頼を送った企業と面談・選考

Wantedlyでは関心のあった企業からもスカウトメールをいただけたりしてありがたかったです。結果的には4社の選考を受け、最も関心のあった企業から内定をいただけたので承諾しました。

次は何をするのか

次の職場では、医療・福祉領域でサービスを提供している企業で機械学習エンジニアとして働く予定です。関心のあった領域で、機械学習を使った仕事をさせていただけるということで、積極的に取り組み、貢献していきたいと思います。よろしくお願いいたします。

2020年を振り返る

例年と同じく1年の振り返りをしつつまとめたいと思います。

研究

3月に大学院の博士前期課程を修了し、修士論文をまとめました。タイトルは「Emotion Recognition using Machine Learning Techniques」で、脳波を用いたCNNによる感情分類に関する研究についてまとめました。

また、修士論文とは別にCNNのハイパーパラメータ最適化に関する論文を書いています。こちらは現在ジャーナルに投稿中で、プレプリント版をarxivで公開しています[論文] (年末時点で被引用数が4もついてて嬉しい)。

仕事の話

4月から社会人として働き始めました。仮配属ではデータ分析に関する部署に配属され、主に画像処理を用いた開発を行ったりました。また、取り組んだ分析業務について社内賞を頂くこともできました。本配属ではクラウドに関する業務を行っている部署に配属され、クラウドエンジニアとして働いています。

その他

今年はコロナが猛威を振るった1年でした。そのコロナの感染者数の予測について、ARIMAやSARIMAモデルを用いて行ってみた内容をまとめました。

resweater.hatenablog.com

また、会社で推奨されていたこともあり、日本ディープラーニング協会が実施しているG検定を受け、合格することができました。

それ以外では、connpassを通じて8つの勉強会に参加しました。一方、どの勉強会も視聴者としての参加で、発表者ではなかったので、登壇する機会も作っていきたいと思います。

終わりに

今年は大学院を修了して社会人として働き始めるという、身の回りの環境が大きく変わる年でした。しかし、その影響やコロナの影響もあり、あまりアウトプットを出せなかった1年だったと思います。来年はKaggleや統計検定に取り組むなどもう少しデータ分析・機械学習に関するアウトプットを増やしていきたいと思います。