Laboro

Laboro.AIコラム

「SIAI2024」イベントレポート:Laboro.AI企業体験会を開催

2024.10.3

概 要

Laboro.AIでは、2024年9月6・7日に人工知能学会が主催した、企業と若手・学生AI人材のマッチングイベント「第6回SIAI 産学クロススクエア『ミライをつくるAI人材』」に出展しました。お台場にある産総研臨海副都心センター別館で開催されたこのイベントでは、有識者による講演や研究室展示のほか、企業展示として「1hour企業体験」が催され、二日間に渡り多くの学生・若手のAI人材が集まり盛況のうちに終了しました。

このコラムでは、本イベント内で当社エンジニアリング部が行った「1hour企業体験」の様子をお伝えし、Laboro.AIで働く機械学習エンジニアの業務の一端をご紹介していきます。

目 次

最適化プロジェクトをテーマにした企業体験
最適化プロジェクトのワークフローを追体験
 ・ある中学校からの悩み相談
 ・Step1. 最適化要件の洗い出し
 ・Step2. 最適化問題の定式化
 ・Step3. プログラムの実装・検証
Laboro.AIのエンジニアリングの特徴
Laboro.AI機械学習エンジニアを目指す方へ

最適化プロジェクトをテーマにした企業体験

今回当社が実施した企業体験プログラム「Laboro.AI1hour企業体験」では、1時間の時間を使って当社のAIプロジェクトを追体験いただくことを目的に開催、2日間で約40名の学生・若手AI人材の方々にご参加いただきました。

そのテーマは「最適化定式化プロジェクトを追体験しよう」。Laboro.AIでは、組合せ最適化問題のプロジェクト実績を多く保有していますが、実際のプロジェクトでは、クライアント様にヒアリングを行いながら最適化問題として定式化するために必要な制約条件などを洗い出していきます。今回のプログラムでは、参加者の方々にLaboro.AIの機械学習エンジニアになってもらった想定で、これらのワークフローを追体験していただき、Laboro.AIの最適化プロジェクトの一端に触れてもらいました。

最適化プロジェクトのワークフローを追体験

ある中学校からの悩み相談

今回用意したサンプルワークの設定は、ある中学校からの相談があったというもの。具体的にはクラス編成に関する相談で、近年の生徒数の増加や保護者からの要求の増加によってクラスの編成がより難しくなっていること、そしてこれまで編成を担ってくれていたベテラン教員が定年退職してしまったことから、自動でクラス編成を最適化するシステムを作りたいという相談があった、という設定です。

そして今回の企業体験では、実際のプロジェクトでも行われ最適化プロジェクトの中核にあたる、最適化要件の洗い出し、最適化問題の定式化の2つのフェーズにチャレンジしてもらいました。

Step1. 最適化要件の洗い出し

「数理最適化問題」という言葉そのものには聞き馴染みがない方も多いのかもしれません。ですが、与えられた制約条件のもとで特定の目的関数を最小化(最大化)することを指すこの問題、実は高校数学で習う例えば以下のような問題(所与の要件を表す直線グラフが交わる点を導く)も数理最適化問題の一種で、とても身近な数学問題の一つでもあります。

ある工場では、製品Xと製品Yを製造しています。製品X, Yを製造するには、原料としてアルミと鉄が必要で、それぞれ以下の表で表されます。このとき、売り上げを最大化するためには、製品X, Yをそれぞれ何kg製造すれば良いでしょうか。

ですが実際のビジネスに関連する最適化問題の場合、与えられる条件はこれほどシンプルなものではありません。今回のワークのクライアントである中学校から来たクラス編成に関する事前情報は、以下のような内容でした。では、これらの情報からどのような最適化要件を設定すべきなのでしょうか。(ぜひ考えてみてください)

実際のAI開発プロジェクトでも要件定義は非常に重要な事前タスクで、要件の洗い出しが疎かになったり不適切だったりすると、プロジェクト開始後に解決のアプローチを一から変更しなければならなくなる、新たに要件が追加されることで人材や資源リソースの不足を招くといったリスクにつながってしまいます。

そのため通常はクライアントに対する入念なヒアリングから要件を明確化していくものですが(※)、今回は参加者の方々に仮説として考えられる最適化要件の洗い出しを行ってもらいました。例えば以下のような要件が正解例として想定されます。

※当社では主たるクライアントワークはAIコンサルタントであるソリューションデザイナが実施いたしますが、クライアント担当者様との技術専門性の高い内容に関する議論などについては機械学習エンジニアが行うケースもございます。ソリューションデザイナ、機械学習エンジニアの役割について詳しくは、こちらの採用ページでご確認いただけます。

Step2. 最適化問題の定式化

次のステップは、洗い出した要件の定式化です。実際に最適化ソルバー(数理最適化問題を解くためのアルゴリズムが搭載されたソフトウェアやツール)を使って解を導くためには、この制約条件の定式化が不可欠です。なお、最適化ソルバーを用いるにあたっては、\(x < 1 \ if \ y >1\)のような絶対値条件やif文条件が扱えないこと、ソルバーが扱いやすい定式化を行うことなどに注意が必要です。

それを踏まえて企業体験ワークでは、以下の決定変数、リスト、定数を利用することを前提に定式化にチャレンジしてもらいました。洗い出したそれぞれの制約条件はどのように定式化すべきでしょうか。(ぜひ考えてみてください)

例えば「1. 各生徒は必ず1つのクラスに割り当てる」は、次のように定式化することができます。まずある一人の生徒001に注目します。生徒001は必ずクラスA~Fのどこかに属する必要があるので、生徒001に関する決定変数\(x_{001, \ A} \ , x_{001, \ B} \ , … , x_{001, \ F} \ \) の和が必ず1になる必要があります。この条件式を各生徒に対して一般化したものがこちらの解答例です。

次に「2. 各クラスの生徒は39人以上、40人以下とする」の定式化は、まずある一つのクラスAに注目します。クラスAに所属する生徒の合計は、クラスAに関する決定変数\(x_{001, \ A} \ , x_{002, \ A} \ , … , x_{237, \ A} \ \) の和で表すことができます。この和が39人以上、40人以下にすることでクラスAに関する条件式は完成です。この条件式を各クラスに対して一般化したものがこちらの解答例です。

そして今回の制約条件の中で最も定式化が難しいのが「4. 各クラスの学力試験の平均点は学年平均点±2点以内とする」で、今回の参加者でも正解できたのはわずか1人でした。その定式化の例がこちらで、詳しい解説は最後に記載しています(※)。

Step3. プログラムの実装・検証

今回の企業体験では時間の関係からこれまでの2つのステップ、最適化要件の洗い出し、最適化問題の定式化に絞って開催しましたが、実際の当社プロジェクトでは次のステップとして、定式化した制約条件をプログラムで実装することも行います。

クライアントとの認識を合わせるためにも、簡易的なアプリの実装を行うことは少なくなく、双方にとってとても重要なステップです。なお、最近ではChatGPTに代表されるLLM(大規模言語モデル)に制約条件を尋ねるだけで一定レベルの実装スクリプトを返してくれるようにもなってきており、プログラミングの効率化が進んでいます。イベント会場では今回のワーク内容に照らした実装結果の簡易的なデモを紹介させてもらいました。

Laboro.AIのエンジニアリングの特徴

2日間に渡り実施した「Laboro.AI 1hour企業体験」、参加された方々には当社で働く機械学習エンジニアになっていただいたつもりで、その業務の一端を体験いただきました。

この企業体験の内容からもわかるように、当社のエンジニアリングの大きな特徴は、その裁量の大きさにあります。Laboro.AIでは『カスタムAI』の名の下、オーダーメイドによる受託開発型でのAIソリューションの開発・提供をしていることから、自社プロダクトを持たない分、クライアントの課題に寄り添い、そのためのベストな手法を選択し、最適なソリューションを構築することを目指します。一つ一つのタスクは地道なことの積み重ねではありますが、エンジニアとして与えられた裁量を存分に活かし、よりベストなアプローチを探索することが、クライアントへの価値提供に直結する点は大きな魅力です。

また、今回のワークのように、定式化などに留まらず実装まで含めた開発範囲の広さも特徴です。言い方を換えれば、当社のエンジニアリングの視点は「いかに精度を高くするか」ではなく、「いかにクライアント成果に貢献するか」にあります。当社では「テクノロジーとビジネスを、つなぐ。」というミッションを掲げていますが、技術精度のみを追求するのではなく、クライアントのビジネス成果達成に最適な形のAIソリューションをお届けすることを第一に、より一歩踏み込んだ範囲でのエンジニアリングを行っています。

さらにLaboro.AIは、最適化だけでなく、LLM、強化学習、画像、音声など、非常に幅広い分野でのカスタムAIソリューションの開発・提供をカバーしている点も特徴です。クライアントに対してよりマルチなアプローチでの提案ができることはもちろん、エンジニアにとってはそれぞれが保有しているスキル・ノウハウを活かしながら、より多様な範囲の新たな知見を習得できる環境があります。

Laboro.AI機械学習エンジニアを目指す方へ

Laboro.AIでは、機械学習エンジニアの採用を随時行っています。このコラムを読んで少しでも興味を持ってくださった方、より詳しく業務内容や働き方について知りたいと思った方は、ぜひお気軽にこちらのフォームからお問い合わせください。また、当社エンジニアの業務内容などについては、こちらの採用ページでもご紹介しています。皆様からのご連絡を心よりお待ちしております。

(※) 解説:「4. 各クラスの学力試験の平均点は学年平均点±2点以内とする」の定式化
あるクラスAの学力試験の平均点はどのように定式化できるでしょうか。平均点は合計点数÷合計人数で求められることに注目すると、合計点数および合計人数をそれぞれ定式化すればよいことがわかります。

まず、合計人数の定式化を考えます。これは、条件2の定式化でおこなったクラスAに所属する生徒の合計と同じです。したがって、決定変数\(x_{001, \ A} \ , x_{002, \ A} \ , … , x_{237, \ A} \ \) の和で表すことができます。

つづいて、合計点数の定式化を考えます。たとえば、生徒001の点数は定数\(score_{001}\)で与えられているため、クラスAにおける生徒001の点数は\(score_{001} × x_{001, \ A}\) で表されます。もし生徒001がクラスAに所属していない場合、\(score_{001 } × x_{001, \ A} = 0\) となり合計点数にはカウントされないことがわかります。この積を各生徒に対して足し合わせることで、クラスAに所属する生徒の合計点数を求めることができます。最後に、合計点数および合計人数を利用して、平均点を求めた条件式を各クラスに一般化したものが文中に示した解答例です。

参考

Laboro.AI 採用ページ
SIAI 2024