ブログ
掲載先
33 件の記事
コーディングエージェント主体に実装の進め方を変え始めている話 - LayerX エンジニアブログ
こんにちは。LayerX Ai Workforce 事業部 FDE部 エンジニアの古濵(@furu)です。 ここ数ヶ月で、実装の進め方を少しずつ変えています。 以前はエディタのウィンドウを複数開き、それぞれで別のタスクを進めていました。 しかし、複数のタスクを並列に進めると、どのウィンドウで何をしていたか分からなくなり、切り替えるたびに読み直しも発生します。 体感では忙しいのに、本当に能率が上がっているのかは疑わしい、という状態でした。 そこで、もっとコーディングエージェント主体に実装の進め方を変えられないかと思い始めました。 複数のエージェントを 1 つのターミナルでまとめ、外から状態の確認…

持続可能なAIエージェント開発のためのアーキテクチャ設計について考える - every Tech Blog
はじめに こんにちは。デリッシュキッチンでデータサイエンティストをしている古濵です。 デリッシュAIを始め、約1年ほどAIエージェントの開発に取り組んできました。 今回は、個人的に感じたAIエージェント開発のアーキテクチャについて触れようと思います。 あくまで個人的意見という点にご留意ください。 背景 AIエージェントのようなシステムでも、明確な設計思想に基づいたアーキテクチャ選択が重要です。 しかし、AIエージェント開発における確立されたアーキテクチャパターンは、まだ十分に整理されていない状況です。 一般的にアーキテクチャを考える時、クリーンアーキテクチャ(レイヤードアーキテクチャ)などに代…

MLflow Tracing時に並行処理するとTracingが分かれる問題への対処法 - every Tech Blog
はじめに こんにちは。デリッシュキッチンでデータサイエンティストをしている古濵です。 今回はニッチな内容ですが、タイトル通りの問題が発生したため、その対処法について備忘録的にまとめます。 動作環境は以下になります。 Databricks Runtime: 15.4LTS for ML Python: 3.11.11 ライブラリはDatabricks Runtimeのバージョンから以下にアップグレードしています openai==1.65.2 mlflow==2.20.3 pydantic==2.10.6 databricks-agents==0.16.0 databricks-sdk==0.50…

人工知能学会(JSAI2025)に参加しました - every Tech Blog
はじめに こんにちは。デリッシュキッチンでデータサイエンティストをしている古濵です。 2025年5月27日〜30日に開催された第39回人工知能学会全国大会(JSAI2025)に、プラチナスポンサーとして協賛いたしました。 今年は史上最多の参加者数を更新したようで、学会としての盛り上がりを肌で感じることができました。 tech.every.tv エブリーとしても人工知能学会への参加は今回が初めてでした。 本記事では、スポンサーブースでのエブリーのAIプロダクト開発に関する紹介や、聴講した講演等についてまとめていきたいと思います。 スポンサーブース 弊社のスポンサーブースでは「AIエージェントによ…

レシピ材料の同義語辞書自動化に挑戦 with LLM - every Tech Blog
開発本部のデータ&AIチームでデータサイエンティストをしている古濵です。 今回は、挑戦WEEKで実装した「レシピ材料の同義語辞書自動化」をLLMで実装した内容をまとめます。 挑戦WEEKに関しては、以下の記事をご覧ください。 tech.every.tv 背景 ユーザーのクエリによって、同じ意味を表す言葉でも異なる単語が使われることがあります。 デリッシュキッチンを題材に例を挙げると「鶏もも肉」「とりもも肉」「鳥もも肉」などです。 これらの単語同士を同義語(シノニム)、これらの同義語を対応づけたものを同義語辞書と呼びます。 デリッシュキッチンの検索機能では同義語辞書を人手で作成して対応しています…

Databricks Asset Bundlesを活用したAIプロダクトのCI/CDパイプライン - every Tech Blog
こんにちは。 開発本部のデータ&AIチームでデータサイエンティストをしている古濵です。 最近はAIプロダクト開発をメインで担当しています。 今回は、Databricks Asset Bundlesを活用して、AIプロダクト開発向けにCI/CDパイプラインを整備した内容をまとめます。 Databricks Asset Bundlesとは Databricks Asset Bundlesは、データやAIプロジェクトでソフトウェア開発におけるソース管理、コードレビュー、テスト、CI/CDなどを導入しやすくするツールです。 簡単に言えば、Databricksの各種リソースをInfrastructure…

2024年振り返り - Blogress
ブログ自体久しぶり(3年くらい?)の更新ですが、2024年を振り返ります。 意図せずして、Kaggle Competitions Expertになってしまった まずはこれです。 完全に運ゲーかましてしまいました。個人的にあまり嬉しくないというのが正直なところ。 元々、M2の時にGoogle Smartphone Decimeter Challengeで銀メダルを持っていた状態でした(これ自体は2,3ヶ月くらい頑張って取り組みました)。 そこから月日は流れ社会人になり、コンペに参加しては特にフルコミットもできずという不完全燃焼を繰り返していました。 Kaggleだけではなく、atmacup17,…
デリッシュAIのアーキテクチャ - every Tech Blog
この記事は every Tech Blog Advent Calendar 2024 の 14 日目の記事です。 はじめに こんにちは。 開発本部のデータ&AIチームでデータサイエンティストをしている古濵です。 直近開発に取り組んでいるデリッシュAIのアーキテクチャについてご紹介します。 DELISH KITCHENでは 「作りたい!が見つかる」をサービスのコンセプトとして、様々な機能を提供してきました。 一方、ユーザーひとりひとりの多様なニーズに合わせたレシピを提案していくには既存機能だけでは難しい部分があります。 そこで、AIによる料理アシスタントとして「デリッシュAI」ベータ版を一部ユー…

IBIS2024に参加しました - every Tech Blog
こんにちは。2024/11/04~11/07に開催された統計・機械学習系の学会、第27回情報論的学習理論ワークショップ(IBIS2024)に、弊社データサイエンティストチームでオフライン&オンラインで参加してきました。 2024年は、人工ニューラルネットワークによる機械学習を可能にした基礎的発見と発明に対する業績により、AI/MLの分野がノーベル物理学賞を受賞したこともあり、特別企画として貴重な講演を聞くことができました。 また、2024年のIBISは「開かれたIBIS」として総勢1134名もの参加者が集まり、多くの研究者や企業の方々と交流することができ、チュートリアルや企画セッションを始め、…

RAGでOpenAI APIのStructured Outputsを使い倒す - every Tech Blog
こんにちは。 開発本部のデータ&AIチームでデータサイエンティストをしている古濵です。 昨今の生成AIはどんどん新しいものが生まれ、日々キャッチアップを欠かせない日々を過ごしております。 9月もo1モデルが発表されましたが、今回はそちらではなく、8月に発表されたStructured Outputsを活用した取り組みについてご紹介します。 Structured Outputsとは openai.com Structured Outputsとは、モデルによって生成された出力が、開発者が提供する JSON スキーマと完全に一致するように設計された新機能です。 今までもJson ModeやFuncti…

MLのスモールスタート時にDatabricksのFeature Storeを導入するべきか否か - every Tech Blog
こちらはevery Tech Blog Advent Calendar 2024(夏) 17日目の記事になります。 こんにちは。 開発本部のデータ&AIチームでデータサイエンティストをしている古濵です。 変わらずML周辺の開発をもりもりしています。 今回は、DatabricksのFeature Storeについて検証した内容を共有します。 Databricks Model Servingについても検証記事をまとめていますので、ぜひご覧ください。 tech.every.tv 背景 現状、DELISH KITCHENを中心に、ML開発を進めており、今後のML開発のagility向上を見据えて、Fe…

DELISH KITCHENのレシピのレコメンドにTwo-stage Recommender Systemsを導入するまでの道のり - every Tech Blog
こんにちは。 開発本部のデータ&AIチームでデータサイエンティストをしている古濵です。 引き続き、私がフルコミットしているDELISH KITCHENのレシピレコメンドについてまとめていきます。 前回の投稿の続きのような位置づけです。 私自身の苦悩も含めた思考過程と実際に取り組んだことについてまとめていきます。 背景 DELISH KITCHENではユーザの嗜好に寄り添ったアプリのパーソナライズに向けた開発をしています。 大きく3つの課題を解決するために、アプリのパーソナライズに注力しています。 受動的に提示するレシピのパーソナライズ不足 サービスの成長に伴い、ユーザ数もレシピ数も増えているの…

DELISH KITCHEN のレシピレコメンドの立ち上げとこれから - every Tech Blog
この記事は every Tech Blog Advent Calendar 2023 の 20 日目です。 こんにちは。 開発本部のデータ&AIチームでデータサイエンティストをしている古濵です。 今回は、最近私が取り組んでいるDELISH KITCHENのレコメンドの立ち上げとこれからに向けてのお話をしようと思います。 はじめに DELISH KITCHENでは、プロの管理栄養士が作成したレシピコンテンツを提供しています。 DELISH KITCHENをローンチした初期はコンテンツ数が多くなかったこともあり、サーバー側の簡易な集計ロジックをもとにユーザーにレシピを提供していました。 しかし、ロ…

IBIS2023に参加しました - every Tech Blog
こんにちは。2023/10/29~11/1に開催された統計・機械学習系の学会、第26回情報論的学習理論ワークショップ(IBIS2023)に、弊社データサイエンティストチームでオンライン参加してきました。 チュートリアルや企画セッションでは、2023年の開催ということもありやはり、昨今盛り上がりを見せているLLMが多くテーマとして取り上げられていました。 様々な研究や活用例がわかりやすくかつ多様に紹介されており、オンラインという形ではあったものの、その勢いや盛り上がりを感じることが出来ました。 本記事ではその中から、気になった講演をいくつか紹介していきます。 チュートリアル: 大規模言語モデル活…

Open Interpreterの実装を深掘り - every Tech Blog
はじめまして。株式会社エブリーの開発本部のデータ&AIチームでデータサイエンティストをしている古濵です。 最近話題のOpen Interpreterについて、実装の中身を追ったので簡単な解説と所感についてまとめました。 Open Interpreter Open Interpreterとは、LLMに指示を出し、ローカル環境でコードを実行するツールです。 公式のREADMEによると、ChatGPTの機能として使えたOpenAI Code Interpreterとは異なり、Open Interpreterの売りはローカル環境で実行できることかと思います。 自然言語を通じて、対話的にPCの一般的な機…

【青果×ポケモン】シンオウ地方ポケモンに青果商品のニックネームをつける - Blogress
タイトルでわかるとおり、ネタ回です。 はじめに スーパーは好きですか。僕は好きです。 コンビニは割高なので、原則スーパーでしか買い物をしません。 また、超(スーパー)アルバイターとして約4年ほど働き、精肉、鮮魚、青果と渡り歩いてきました。 ポケモンは好きですか。僕は好きです。 11月19日発売のダイパリメイクに向け、旅パを考えるくらいには発売を楽しみにしています(パール購入予定)。 旅パは固まりつつも、旅をしていく上で、もう一つ重要な要素があります。 そうです。ニックネームです。 ニックネームをつけなければ愛着というものが欠如してしまいます。 つまり、旅パのポケモンたちを超(スーパー)ポケモン…

スライディングウィンドウ処理をしたIMUセンサデータに対して、クラスタリングによるパターン抽出は有効か否か - Blogress
はじめに 以前、Twitterにて 前略ーー時系列データをsliding windowで切り取ってkmeansしてパターン見つけるみたいな手法あるけどそれやると正弦波になって意味ないでみたいな話を思い出したーー後略 というものを見かけました。 時系列データの前処理として、スライディングウィンドウ処理で部分時系列を作り、それを特徴ベクトルとして機械学習で予測する、みたいなことは何度も経験があるので、k-meansの中心点が正弦波(位相は問わない?)になるというのはとても興味深いです。 ツイートを見かけたときは「へー」くらいに思って、いいねしてたのですが、今回は気になったので、自分の持っているデー…

LSTMによる時系列データの教師なし異常検知 - Blogress
はじめに 以前(といってもかなり前)、オートエンコーダによる時系列データの教師なし異常検知に関して記事を書きました。 今回はその続きで、同じ心電図データを用いて、LSTMによる異常検知をしたいと思います。 noleff.hatenablog.com プログラム import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import Sequential from…

Google Smartphone Decimeter Challengeの解法 - Blogress
Google Smartphone Decimeter Challenge 概要はこちら post-processing approach snap to grid (snap to ground truth) 地理情報を取得し、最寄りの位置(地理情報)に予測位置を補正する手法です。 このnotebookでは、地理情報のみのアプローチですが、trainデータとtestデータで同じ経路を通っている場所も一部あることから、trainデータのground truthもsnap対象としました。 なお、最寄りの緯度経度を見つけるのは気軽に叩けないほど時間がかかりました。 Road detection a…

初参加のKaggleで銀メダルとるためにしたこと(Google Smartphone Decimeter Challenge) - Blogress
solutionはこちら はじめに 先日終了したGoogle Smartphone Decimeter Challenge(通称outdoorコンペ)に参加し、銀メダル(34位/810teams)をとることができました。 Kaggle初参加でしたが、相方の後輩とえっちらほっちらと蛇行しながらも、前に進めることができた結果が実ったのだと思っています。 outdoorコンペの振り返りとともに、約2ヶ月間何をしたかをまとめていきたいと思います。 www.kaggle.com outdoorコンペ概要 スマートフォン(Android)から得られるデータから、位置(緯度・経度)を推定するコンペでした。 …

groupbyしてvalue_counts()したい - Blogress
タイトル通りです。 データ import pandas as pd from sklearn.preprocessing import LabelEncoder df = pd.DataFrame([ ['Aさん', 100, 'S', 'cola'], ['Bさん', 150, 'M', 'tea'], ['Cさん', 200, 'L', 'tea'], ['Dさん', 100, 'S', 'tea'], ['Eさん', 200, 'L', 'coffee'], ['Fさん', 200, 'L', 'tea'], ['Gさん', 150, 'M', 'coffee'], ['Hさん', 20…
複数ファイルのデータ結合方法(InvalidIndexError: Reindexing only valid with uniquely valued Index objects) - Blogress
はじめに 複数ファイルにわかれたデータの結合方法のメモです。 InvalidIndexError: Reindexing only valid with uniquely valued Index objects というエラーとも戦いました。 データ 気象庁の気象データを使いました。 広島、高松、大阪、東京、那覇の5都市分のデータです。 Pythonスクリプトと同じ階層にあるdataディレクトリの中身は以下になります。 ├── data │ ├── 2016 <- 2016年の気象データ │ │ ├── 広島.csv │ │ ├── 高松.csv │ │ ├── 大阪.csv │ │ ├── …

Kaggle挑戦前時点でのデータ分析手法 - Blogress
はじめに 最近、重い腰を上げ、ようやくKaggleを始めました。 タイタニックやインターン限定のコンペ等には参加したことがありましたが、賞金が発生するようなKaggleに参加したことは、今までありませんでした。 データサイエンス及びエンジニアリングのスキルは研究メインで勉強している現状です。 そんな自分が、現時点でデータを与えられた場合、何から初めてどう進めるかのプロセスを本記事でまとめたいと思います。 Kaggle等進め、自分にさらに技術力がついたとき、この記事を読んで「このときはわかってなかった……」と顧みるための備忘録とも言えます。 なお、ビジネス的な話はなしとします。 データ データは…

愛(AI)の力でパイモンを救いたい - Blogress
ネタ回です。 前回の投稿から少し開きました。 就活と論文のダブルパンチで死んでたわけですが、また引き続き頑張ります。 はじめにのはじめに 本記事で出てくる画像は以下から引用してます。 株式会社miHoYo corp.mihoyo.co.jp Bossard, Lukas and Guillaumin, Matthieu and Van Gool, Luc, Food-101 – Mining Discriminative Components with Random Forests, European Conference on Computer Vision, 2014. data.visi…

機械学習(pcaとkmeans)による画像のグルーピング - Blogress
はじめにのはじめに 本記事で出てくる画像は一部、以下から引用してます。 株式会社MIHOYO corp.mihoyo.co.jp はじめに 自分で集めた画像でCNNするために、TwitterAPIの検索機能を使って画像を集めています。 集めている画像は特定の作品のキャラクターだったりするわけですが、CNNで分類モデルを作る上で画像にラベルを付けなくてはなりません。 このラベル付けは言うまでもなく面倒で、時間がかかります。そこである程度自動化できないかと思ったわけです。 したがって、今回はタイトルにある通り、pca(主成分分析)とkmeans(クラスタリング)を用いて画像のグルーピングを行いたい…

カテゴリ変数(質的データ)の前処理の違いまとめ - Blogress
はじめに 一般的に機械学習においてカテゴリ変数は、前処理として数値化する必要があります。 本記事ではその前処理の方法と違いについてまとめです。 データの種類と意味 下図のように変数は4つの尺度に分けられます。 今回説明するのは名義尺度と順序尺度に関する前処理の方法です。 引用:人工知能プログラミングのための数学がわかる本 データ まず、簡単なデータを以下のコードで準備します。あるユーザがある飲み物を買ったときの値段、サイズ、飲み物の種類が記載されています。 このデータでは、sizeデータはL>M>Sの関係にあるため順序尺度、drinkデータは大小関係がないため名義尺度になります。 import…

機械学習のおおまかな流れを理解する - Blogress
この記事は SLP KBIT Advent Calendar 2020 12日目の記事です。(じゃあなぜ 13日に公開しているのか) adventar.org はじめに 機械学習を勉強する上で、重要なことはいくつもあると思います。 その中でも本記事は全体像の部分、機械学習のおおまかな流れに焦点を当てます。 機械学習を勉強し続けてはや2年。機械学習の分野は学ぶことが多く、勉強したてのときは気にも止めていなかったおおまかな流れですが、これを理解しているのとしていないとのでは今後の理解度に大きく響くと感じています。 ですので、本記事では〇〇モデルの具体的なアルゴリズムや数学的内容(理論)だったり、精…

オートエンコーダによる時系列データの教師なし異常検知 - Blogress
はじめに 深層学習を用いた異常検知手法では有名なオートエンコーダを使ってプログラミングしたことをまとめます。オートエンコーダによる再構成誤差とLSTMによる予測誤差などとも比較予定です。 追記 LSTMの異常検知記事、書きました 対象データ 今回もこちらの心電図のデータを使わせていただきました。 心電図のデータですので比較的周期性のあるデータですね。では実装していきます。 なお、データに関しては以前異常検知に関するブログでまとめてあるのでご参照ください。 noleff.hatenablog.com プログラム 環境 OS: macOS Catalina numpy: 1.18.5 pandas…

LightGBMを使って気温予測してみた - Blogress
はじめに 今回の記事では、Kagglerランカー達がこぞって使ってるという「LightGBM」なるものを使ってプログラミングしたことをまとめていきます。 LightGBMとは LightGBMとは決定木アルゴリズムを応用したアルゴリズムです。よくXGBoostと比較されるのを目にします。 詳しくは以下のサイトをご参考ください。決定木、アンサンブル学習、勾配ブースティング(LightGBMやXGBoost)の順に、非常にわかりやすくまとめられています。 www.codexa.net プログラミング データ 実際に手を動かしていきます。まず、肝心のデータですが、今回は高松市の気象データを気象庁の方…

Pythonのクラス内におけるメソッドについてまとめてみた - Blogress
目的 備忘録用です。普段Pythonでプログラミングするとき、めんどくさいのであまりクラスを使ってプログラミングしないことが多いです(jupyter notebookのベタ書き脳死コーディングのせい)。 ですが、最近はちょっとこのままでは良くないなと、あまり使う必要ないと思う場面でもわざわざクラスにしてPythonのコードを書いてます。 今回の記事は二番煎じ感満載かもしれませんが、ご了承ください。 メソッド クラス内のメソッドには以下の3種類があります。 インスタンスメソッド クラスメソッド スタティックメソッド インスタンスメソッド 普通のメソッドがこれです。簡単に例題プログラムを書きます。…
機械学習を使わずに時系列データの異常検知 - Blogress
はじめに 研究で時系列データの異常検知に関する研究を行っています。そのため、機械学習による異常検知のアルゴリズムについて普段から文献調査などしているわけですが、機械学習を使わずとも異常検知できるという記事を見つけました。 https://cpp-learning.com/hampel-filter/ https://qiita.com/hoto17296/items/d337fe0215907432d754 大変興味深かったので、記事の内容に少しだけアレンジを加えて実装してみたいと思います。 対象データ 自分で異常検知用のデータを作成しても良いのですが、それだとどうしても作業的になってしまい、…

Telloのセンサデータ収集に関しての捕捉 - Blogress
前回 前回の記事でTelloのセンサデータ収集方法について書きました。今回はその記事の補足となります。良かったら、まず先にそちらを読んでいただければなと思います。 今回の記事内容 今回の記事は前回の内容データ収集部分に関する捕捉です。具体的にはtello.pyの中のget_tello_sensorメソッドの話になります。以下コードです。 import socket import threading import time from datetime import datetime import csv from stats import Stats class Tello: def __ini…

Telloのセンサデータ収集 - Blogress
はじめに Ryze Telloでプログラミングしたときのセンサデータ収集方法についてまとめます。言語はPythonでやりました。SDKとして、DJIの公式SDK「Tello-Python」を使っています。 https://github.com/dji-sdk/Tello-Python 本ブログでは、上記のサンプルコードを理解、実装済みであることを想定しています。まだの方はgit cloneして動かしてみてください。 以下のサイトが参考になると思います。 https://qiita.com/hsgucci/items/3327cc29ddf10a321f3c 開発環境 macOS Catalin…
