RNNで需要予測!ニューラルネットワークを現場導入する難しさを知る【インターン体験記#3】
はじめまして。名古屋大学大学院情報学研究科 修士1年(2024年11月現在)の今尾陸人と申します。
大学4年生の冬より、「株式会社インサイトリード」にてAI・データサイエンス分野で長期インターンシップを経験させていただきました。このインターンシップは、私が現在就職活動を進める中で将来のキャリアを見据える上で大変有意義な経験となりました。
今後、AI分野での就職を志す学生の皆さんがキャリアを考える際の参考になればと思い、ここでインターンシップでの学びや経験について共有させていただきたいと思います。
1. インターンシップに参加したきっかけ
私は当時、情報学部の4年生であり、広く情報技術に興味を持っていました。
特に機械学習に興味を持っており、研究室においても深層生成モデルに関する理論研究を行っていました。
その研究室の先輩であり、物流会社で働く社会人修士の長谷川さんから「需要予測による倉庫の在庫削減」のインターンシップを募集していることを伺い、参加させていただくことを決めました。
お話を伺う中で以下の3点に魅力を感じたため参加を決めました。
1.自分の学んできたことを社会課題の解決に応用できそうであること。
2.自分のスキル向上に役立ちそうであること。
3.社員の方々の雰囲気やオフィスの環境、労働条件も含め非常に働きやすい環境が整っているように感じたこと。
私は大学で応用研究ではなく理論研究のみを行っているので、自分が学んだ理論知識を社会にどのように応用できるかとても興味がありました。
よって特に1の社会課題の解決に関われることに魅力を感じました。
2. インターンシップで行ったプロジェクトの概要
(※)この活動では「AIで倉庫の在庫削減!初めてAIプロジェクトに参加して感じたこと【インターン体験記#2】」の筆者である塚上さんと協力して行いました。
株式会社インサイトリードのグループ会社であるマルト水谷は、春日井市に拠点を持っています。その倉庫では約12000〜14000アイテムの業務用食品・酒類を倉庫に保管し、そこから飲食店に毎日配送しています。
しかし、ここ数年で取引先の飲食店様が多くなり、注文数も増えたため、倉庫設立時に想定していた倉庫のキャパシティを超過してしまいました。そこで、このインターンシップのプロジェクトが立ち上がりました。
プロジェクトの目的は「AIを活用した需要予測により、在庫と欠品率を削減する」、その具体的な目標として「欠品率を抑えつつ、在庫を現状の30%削減する」が掲げられました。
3. 担当した業務内容
1. 需要予測AIの開発
「欠品率を抑えつつ、在庫を現状の30%削減する」を達成するには、まず商品の需要を正しく予測しなければなりません。
元々は過去の出荷データからルールベース(人の経験に基づいて事前に定義された計算式)によって計算される値を出荷の予測値としていました。
細かい定義式については省略しますが、その予測値やリードタイムを考慮して発注する商品数を決定します。今回のプロジェクトではルールベースの計算式が用いられている出荷の予測をAIに代替させることで精度向上を目指しました。
プロジェクトの序盤、モデルには、比較的簡単に実装でき、ある程度精度が高いことで知られるLightGBMを採用しました。
しかし、先述の目標を達成するには、さらに精度を向上させなければならず、そのため私は主に予測モデルの改良、変更に取り組むことになりました。
扱ったモデルとしては、時系列データに特化していて精度が良いとされるリカレントニューラルネットワーク(RNN)を扱いました。
2. RNNとは
今回のタスクは過去の出荷データを入力としているので、扱うデータは時系列データになります。
一般的なニューラルネット(FNN)は情報が一方向(入力層 → 隠れ層 → 出力層)に流れ、各入力は独立に扱われるため、過去の入力情報は考慮されません。
RNNは通常のニューラルネットと異なり、出力や隠れ層の状態が次の時刻の入力に入力されるため、時間的な依存関係を捉えることができます。よって一般的に時系列データに強いモデルであるためこのRNNモデルを採用しました。
厳密にはRNNのセルを改良することで、精度や計算量を軽量にしたGRUモデルを使用しました。
3. 難しかったところ
データの加工
モデルの学習を行う以前に、RNNの性質として各系列データが同一の次元数や特徴量を持たなければなりません。
例えば、LightGBMのように非構造化データや部分的に欠損した特徴量をそのまま扱えるモデルとは異なり、系列長や特徴量の整合性が厳密に求められます。
そのため、すべての系列データを一定の長さに揃える処理や、欠損値の補完、系列全体の正規化・標準化など、データ前処理に長時間取り組まなければなりませんでした。
この過程ではSQL、Pythonフレームワークによるデータベースの操作についてのスキルを身につけることができました。
モデルの学習
学習についても同様に、RNNはLightGBMのようにブラックボックス的に取り扱うことができないため、モデルの振る舞いを逐一考えて構築しなければならず、苦労しました。
しかしその分、手を加えて変更できる部分が多く、改良できるため、精度向上が見込まれます。この精度向上に向けた取り組みは現在も継続中です。
この過程ではPyTorchというフレームワークによる機械学習モデルの構築スキルを身につけることができました。
4. その他
データ分析業務を行う人にとっては、データ分析のスキルだけでなく、対象とする業務領域の知識も必要です。
株式会社インサイトリードは現場との距離が近いことも魅力の一つだと感じました。
実際に倉庫で発注を行う方の業務を見学したり、ヒアリングしたり、配送トラックに同乗させていただき配送の業務の体験もさせていただきました。
データのみではなく実際に業務を見学、体験することで発注する上での制約や、現状に対する理解が深まり、受発注のシミュレーション環境の構築もスムーズに進みました。
4. インターンシップを終えて
このインターンを通して、データサイエンスの知識や技術力を身につけることができましたが、技術的なことのみならず、現場の方とのコミュニケーション、チームワークを通してソフトスキルも向上することができました。
また、この経験からニューラルネットはビジネスとの親和性が低いことも学びました。調べると多くのデータサイエンティストがこのような考えを持っているようです。その理由は様々ですが、私は大きくは以下の2点にあると考えます。
・モデルの作成、トレーニングに時間がかかりすぎること
・説明可能性が低いこと
AIをビジネスに応用する際は、その状況にもよりますが、ある程度の精度が達成できていれば、それ以上の精度を求めるよりも、即効性や説明可能性(AIがなぜこの出力をしているのか)が重要であることを学びました。
精度が上がらなくてもこのような知見が得られたことは、重要な意味がありました。
今回はチームでの活動でしたが、卒業研究と就職活動で忙しく稼働日数が少ない中で、チャレンジングなことに挑みました。
それによって足踏みする期間も多くあり、あまり貢献できることが多くありませんでしたが、このように少々難しいことに挑もうとしていることに関しても、長谷川さん、塚上さん、社員の方も背中を押してくれる形で応援くださり、様々な協力をいただきました。
株式会社インサイトリードのインターンシップは、AIのスキルを向上させることができ、人としても成長を実感できる体験でした。また、何より挑戦しやすく、働きやすい環境が整っていると感じました。
AIプロジェクトの進め方やAIを現場にどのように導入すべきかを学びたい方、開発から導入まで一貫して関わりたい方におすすめです!
インサイトリードはインターン生を募集しています!
データサイエンティストやAIエンジニアを目指している方、ぜひご応募ください!
私たちと一緒に、「食×IT」の領域で、DXを推進しませんか?
現場で実際に使われるリアルなデータを活用し、AIを駆使して飲食業界の改革に挑戦できます!
新しい挑戦をしたい方、学びたい気持ちがある方ならどなたでも大歓迎です!