Skill
得意とする領域・技術
リサーチャータイプ
シミュレーション、数理最適化、機械学習と、数理科学の幅広い領域に精通。
競技プログラミングにも取り組んでおり、アルゴリズム実装力にも優れる。
顧客の業務課題に対して、様々な分野の技術を用いて解ける問題に落とし込み、解決する。
当社の理念を体現する一人。
Achievements
主な実績
- 2017年
- 入社
- 2017年~
- S4 Simulation System の開発
機械学習、数理最適化、シミュレーションなどを活用する受託案件を担当
- 2019年~
- 新人研修におけるソフトウエア開発の講義を担当
- 2020年~
- 趣味として競技プログラミングを始める。企業対抗の団体戦PGBATTLEにおいて3年連続で上位入賞(2022年度は3位入賞)をはたす。
AtCoder 二段
- 主な業務実績
-
- 自動運転システム
- 配送計画最適化システム
- ロボットアームの制御システム
- 小売業における推薦アルゴリズム構築
- 広告配信のシミュレーション&最適化
- 交通シミュレーション
- その他
- 当社オウンドメディアMSIISMにて「Pythonコードの読み方講座」と題したコラムを執筆中
Style
スタイル・仕事との向き合い方
名前のついていない問題に対処する
問題解決は端的には「1. 問題を作る」「2. 問題を解く」の 2 ステップからなります。この 2 ステップは独立ではありません。お客様と対話し、行ったり来たりしながら進めていきます。
とりわけ重要なのは問題を作るステップです。
- 解いて意味のある問題を作る
- 解ける問題を作る
という制約のもと、適切な問題を立てる必要があります。
1つめの観点では、ビジネス的な視点をもってお客様の利益につながるように問題を設定することを意識します。
2つめの観点では、技術者の視点をもって (工数・計算時間などの観点で) 現実的な解法が存在するように問題を設定することを意識します。
お客様の利益をよりダイレクトに解決する問題はえてして難しくなりすぎることが多いので、この 2 つは整合しないことが多いです。そのような場合は解ける範囲で意味のある問題設定になるように頭をひねる必要があります。
また、問題は必ずしも単純な技術ひとつで解決できるものになるとは限りません。複数技術の組み合わせが求められる問題や、ときには初めて目にする「名前のついていない問題」が生まれるかもしれません。そのような問題を作って解くことはこの仕事の醍醐味のひとつです。
分野を俯瞰する視点を養う
多種多様な問題を作る・解くためには数理科学に関する幅広い素養が不可欠です。
知らない分野の問題は作れないので、色々な分野に詳しくなって問題解決の引き出しを増やすことが大事です。
自分の場合、数理最適化・機械学習・シミュレーションといった複数の手段を扱いますが、表面的にはある特定手法の問題 (場合によっては、依頼段階でこの手法を試したい、というような相談を受けることも)に見えていても、よく整理すると別の方法で解決すべき問題であることがあります。
このような判断を下すために、技術の位置付けを整理しておくことを心がけています。
例として、よくある問いですが、「機械学習と最適化の違いは何か?」というのがあります。
自分はこれに対して、機械学習はモデル (or モデルパラメータ)が未知なのでデータからそれを学習する、という問題設定であり、数理最適化はモデルが既知という前提のもとモデル出力結果を良くするような入力変数が知りたい、という問題設定だと捉えています。
この整理の妥当性はともかく、この問いに対して明確な答えを用意している人は多くないように思います。
ところで、同様の考え方にあてはめると、シミュレーションもモデルが既知であることが前提なので、数理最適化と同じグループになります。
それでは数理最適化とシミュレーションの違いはどこにあるのか、ということになりますが、、これについてはまた別の機会で触れられればと思います(笑)。