タグ

*algorithmと*programに関するsh19910711のブックマーク (381)

  • 『Pythonではじめる数理最適化』の7章「商品推薦のための興味のスコアリング」をStanで解く

    この記事は確率的プログラミング言語 Advent Calendar 2023の12/8の記事です。 概要 『Pythonではじめる数理最適化』はいいですよね。親しみやすい実例、分かりやすい数式、きれいなPythonコードと三拍子そろっています (今年のアドカレで改訂版が近いうちに出ることを知りました)。 7章「商品推薦のための興味のスコアリング」では、「何日前に直近の閲覧があったか」と「閲覧回数」の二つの軸で興味のスコアを考えます。興味のスコアが単調減少であるという制約のもと、再閲覧の割合と推定値の二乗誤差を最小化するという凸二次計画問題として解いています。この記事ではStanで解くとこんな感じですというのを示します。メリットとしてベイズ信頼区間も推定されます。 データ 公式のリポジトリの7章のipynbファイルを途中まで実行して得られるデータフレームrf_dfを使用します。他の人の扱い

    『Pythonではじめる数理最適化』の7章「商品推薦のための興味のスコアリング」をStanで解く
    sh19910711
    sh19910711 2023/12/08
    "7章「商品推薦のための興味のスコアリング」 / 「何日前に直近の閲覧があったか」と「閲覧回数」の二つの軸 + 興味のスコアが単調減少であるという制約 / 再閲覧の割合と推定値の二乗誤差を最小化"
  • 続・ブラウザ上でEmbeddingsを作る | Memory ice cubes

    あらすじ 前回の記事で、Tensorflow.jsのUSEを使って、ブラウザ上でEmbeddingsは作れた しかし精度がいまいち というところで、より大きいモデルがあれば・・?それをブラウザから使えたら・・?と思い、いろいろ探してみた。 すると、Web AIっていう野心的なプロジェクトがあって、T5みたいなモデルも使えるらしいことがわかった。 GitHub - visheratin/web-ai: Run modern deep learning models in the browser. ので、やってみた。 が、しかし https://github.com/leader22/text-embeddings-by-webai 動かせるようになるまで体にPRを送ったりと時間はかかったけど、まあできた。 ただ、やっぱ日語の精度はイマイチだな〜という感想に終わった。 続・これだから日

    続・ブラウザ上でEmbeddingsを作る | Memory ice cubes
    sh19910711
    sh19910711 2023/11/24
    "Web AIっていう野心的なプロジェクトがあって、T5みたいなモデルも使えるらしい / onnxruntime-webに依存してML系のタスクができるライブラリは他にもあるらしく / TransformersのJSポートがあった"
  • 大規模言語モデル入門 / LLM introduction (SES2023)

    ソフトウェアエンジニアリングシンポジウム2023 (SES 2023)

    大規模言語モデル入門 / LLM introduction (SES2023)
    sh19910711
    sh19910711 2023/09/03
    "phi-1 [Gunasekar+, 2023/06]: GPT-4を活用してフィルタリングした高品質Githubコード + 教科書品質のデータCodeTextBook, CodeExcersizeを利用 / パラメータ数1.3Bにも関わらず、WizardoCoderやGPT-3.5に匹敵する性能を実現"
  • PyTorchのEmbeddingの挙動についてまとめてみた - DROBEプロダクト開発ブログ

    はじめに CTOの都筑(@tsuzukit2)です この記事では PyTorchEmbedding の挙動について記載します Embedding とは何か 公式の仕様書はこちらになります Embedding - PyTorch 1.9.0 documentation 公式の説明は以下となっており、非常に的を得ていると思います A simple lookup table that stores embeddings of a fixed dictionary and size. 意訳すると、 固定長の辞書埋め込みを保存するシンプルなルックアップテーブル になるんじゃないかなと思います。Embedding は、何だか難しそうにも思えてしまうのですが、ここに記載されている通り非常にシンプルなテーブルでしかないという事です モジュールの解説としては以下のように記載があります This mod

    PyTorchのEmbeddingの挙動についてまとめてみた - DROBEプロダクト開発ブログ
    sh19910711
    sh19910711 2023/07/21
    "loss.backward 実行するとはじめて emb.weight.grad に値がはいります / ただし、ここでもまだ weight 自体は更新されていません / optimizer.step() を実行する事で emb.weight.grad から計算された値を使って weight が更新されます"
  • データ分析コンペにおいて 特徴量管理に疲弊している全人類に伝えたい想い

    Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]

    データ分析コンペにおいて 特徴量管理に疲弊している全人類に伝えたい想い
    sh19910711
    sh19910711 2023/06/16
    "列ごとに特徴量をpickleファイルで管理する / 生成時、同時に特徴量メモを作成する / 1つのスクリプトファイルに特徴量生成をまとめる / 学習に使用した特徴量とパラメータを管理することで再現性も担保" / 2019
  • scikit-learnで5行でできる類似テキスト検索

    この記事はKaggle Advent Calendar 2022の16日目の記事です。 0.はじめに KaggleではShopeeやH&Mコンペなどの(e-)commerceに関連した、類似商品検索やレコメンド系のコンペが度々開催されます。 これらのコンペには商品名や商品画像、ユーザーの購入履歴といったデータが含まれており、商品・ユーザーベースの特徴の抽出を行う必要があります。さらにその特徴を用いて候補となる商品を並び出して、機械学習を用いて最終的に出力する商品を予測します。 記事では、このようなコンペの第一歩として、商品名などテキストに注目した特徴抽出をscikit-learnを主に使った手法を紹介します! なお、私自身コンペを通して学んだことを書いているので、誤りやより良い方法もあるかと思います。何かあればコメントで共有していただけると助かります🙇 1.類似テキスト検索 類似テキス

    scikit-learnで5行でできる類似テキスト検索
    sh19910711
    sh19910711 2023/05/17
    cumlにもNearestNeighborsあるのか / "最近傍探索のメソッドとしてsckit-learnではNearestNeighborsが提供 / fit()でテキスト特徴を入力 + kneighbors()で近傍探索を行いたい変数を入力 / cumlを用いた高速な類似テキスト検索" / 2022
  • MLIR がもたらす新たな中間表現の可能性

    はじめに 半導体の微細化が鈍化し、ハードウェアによる高速化が困難になっている現状において、ソフトウェアによる計算の高速化が喫緊の課題となっています。この状況において、特定のドメインの問題を解くことに最適化された言語であるドメイン固有言語と、そのコンパイラであるドメイン固有コンパイラの活用が望まれています。 ドメイン固有コンパイラの構築の際には、開発を容易にするために、既存のコンパイラ基盤であるLLVMを活用することが考えられます。しかし、LLVM はドメイン固有コンパイラの構築にはあまり向きません。この理由は、LLVM の成功と表裏一体の関係にあります。 LLVM が成功した理由は、コンパイラの処理を適切に分割し、独立したモジュールとして機能させたことにあります。このモジュール化において中心的な役割を果たしているのが、LLVM で用いられる中間表現(Intermediate Represe

    MLIR がもたらす新たな中間表現の可能性
    sh19910711
    sh19910711 2023/04/27
    "MLIR: TensorFlow プロジェクト内で開発 + 特定のドメインの処理にカスタマイズされた中間表現の定義と、複数の中間表現の協調動作を、1 つのインフラ上で実現させる + 抽象構文木の構築と LLVM IR の生成の間を橋渡し"
  • メルカリShopsを支えるMonorepo ML開発環境 | メルカリエンジニアリング

    こんにちは!SouzohのMLチームでSoftware Engineerをしているwakanaです。 SouzohのMLチームは2021年4月にスタートし、ちょうど2年が経ちます。当時1人だったメンバーも、今では4人になり、レコメンデーションを中心に5, 6個の機能を提供するようになりました。MLOpsも成熟し、より新しく高度なML機能開発に集中して取り組める環境が整ってきていると感じています。 そこでこの記事では、立ち上げから2年たった今SouzohのPython, ML環境がどのようになっているか紹介しようと思います。これからPythonやMLのMonorepoでの開発環境を整えようとしている方、特に少人数での運用を考えてる方の参考になれば嬉しいです。 TL;DR SouzohではPoetry, Bazel, VertexAI Pipelinesで快適なMonorepo開発環境を実現

    メルカリShopsを支えるMonorepo ML開発環境 | メルカリエンジニアリング
    sh19910711
    sh19910711 2023/04/13
    "BazelでPythonを扱うのは難ありだが、Kubeflow Pipelinesと相性抜群 / protobufのコンパイルや、docker imageの作成までBazelによって行う / Bazelで用意されている関数でbuildできるためDockerfileも書く必要がありません"
  • Rとomprパッケージで数理最適化を実装する - Qiita

    1. 概要 この記事では、R言語の数理最適化パッケージ「ompr」を使って、混合整数計画問題の実装方法を紹介します。 omprは比較的新しいパッケージであり、日語情報がまだ少ないため、この記事が皆さんの役に立てば幸いです。 pythonであればpulpが有名ですが、pulpと比較してomprの使い勝手や学習コストは同程度かと感じています。 むしろRならではのパイプ記法を使える分、Rユーザーには馴染みやすいかもしれません。 なお、記事では最適化の数理面での解説は行わず、Rでの実装方法のみ紹介します。 2. 必要なパッケージ ompr.roiは、ROI(R Optimization Infrastructure)という最適化問題を解くためのフレームワーク上で様々なソルバーを利用できるようにする補助的なパッケージです。 今回はGLPKというソルバーを利用するので、ROI.plugin.glp

    Rとomprパッケージで数理最適化を実装する - Qiita
    sh19910711
    sh19910711 2023/04/02
    "ompr: R言語の数理最適化パッケージ / pythonであればpulpが有名ですが、pulpと比較してomprの使い勝手や学習コストは同程度 / Rならではのパイプ記法を使える分、Rユーザーには馴染みやすいかも"
  • Stable Baselinesを使ってスーパーマリオブラザーズ1-1をクリアするまで - Qiita

    はじめに 強化学習でゲームを解くことに興味があってちょっとずつ勉強している強化学習苦手勢です。Advent Calender 用に何かゲームの攻略について書いてみることにしました。OpenAI が公開している Stable Baselines の紹介とそれを使ってスーパーマリオブラザーズ 1-1 をクリアするところまでやりましたという内容です。OpenAI Gym / Baselines 深層学習・強化学習 人工知能プログラミング 実践入門を参考にました。 Stable Baselines Stable Baselines は OpenAI が公開している強化学習アルゴリズムの実装セットです。多くの有名な手法を利用しやすい形で提供しています。強化学習アルゴリズムは実装時に仕込んでしまったバグの検出が難しく、学習が上手くいかない時に問題を切り分けにくくしています。Stable Baselin

    Stable Baselinesを使ってスーパーマリオブラザーズ1-1をクリアするまで - Qiita
    sh19910711
    sh19910711 2023/03/07
    "Stable Baselines: OpenAI が公開している強化学習アルゴリズムの実装セット / スーパーマリオブラザーズのゲームプレイ上意味のある行動は ~ 12 種類に限られる / 半分程度のマリオはゴール少し前の穴を越えられておらず" 2020
  • mlflowとluigiによるML実験管理例 - Qiita

    はじめに 記事ではMLの実験を行うときの、コード、パラメータ、モデル、評価結果を管理するための構成例を紹介します。 サンプルコードはこちら 前提知識 Must python docker Want mlflow luigi 思想 前処理を加えたデータや学習したモデルなどプログラムで出力されるファイルは全てmlflowの管理下におく。 コードはgitで管理し、実験結果とcommit hashを紐づける。 前処理、学習、推論などタスク同士の依存関係を管理して、依存しているタスクを自動で実行できるようにする。また、既に実行されたタスクは実行しないようにする。 構成概要 titanicのdataに対して、前処理、学習、推論を行う例を紹介する。 ディレクトリ構成は以下のような感じ。 src/tasks/下に前処理などの具体的なタスクを行うファイルを作成する。 tomlファイルで実行するタスクを指定

    mlflowとluigiによるML実験管理例 - Qiita
    sh19910711
    sh19910711 2023/03/07
    2021 / "mlflow + luigi / 前処理を加えたデータや学習したモデルなどプログラムで出力されるファイルは全てmlflowの管理下に / 実験結果とcommit hashを紐づける / mlflow.sklearn.autologを用いることで、Metricsなどがいくつか自動で保存"
  • Captumを試す - Qiita

    PyTorch Developer Conference 2019 で発表されたものの中に、 Captum というライブラリがあります。 解説記事が見当たらなかったので、実際に動かして記事を書いてみました。 まだ beta であり、かつ積極的に開発されているようなので、今後動作が変わる可能性は十分にあると思います。 Captum とは? Captum とは、機械学習モデルを解釈し、理解するための手法をまとめたライブラリです。 ラテン語で、"理解する" という意味らしいです。 実装されている手法は以下のとおりです。 https://captum.ai/docs/algorithms 入力が出力に及ぼす影響を評価 Integrated Gradients Gradient SHAP DeepLIFT DeepLIFT SHAP Saliency Input X Gradient Guided

    Captumを試す - Qiita
    sh19910711
    sh19910711 2023/03/05
    2019 / "Captum: モデルを解釈し理解するための手法をまとめたライブラリ + ラテン語で、"理解する" という意味らしい + PyTorch Developer Conference 2019 で発表 / Issue に興味深いDiscussion がある"
  • AIモデルのsafetensors形式とは何者か?ckptと比較しつつ解説する

    1,そもそもckpt形式のモデルファイルはどのようにデータを保存していたのか safetensors形式はckpt形式の様々な欠点の改善を目的として作られたデータ保存方法であり、HuggingFaceが主導しています。 そのため、safetensorsの利点を説明するにはまず従来のckptで何がアカンかったのか、ckptのデータ保存方法から読み解く必要があります。 .ckpt拡張子とpickleの関係 画像生成AI関連のモデルでよく目にする.ckptという拡張子は、「pickle」というPythonのモジュールを用いて直列化して保存されたデータに用いられる拡張子です。 データを直列化(バイト列に変換する)ことを「pickle化」・「ピクル化」と呼びます。 逆に、バイト列からデータを復元することを「非pickle化」「非ピクル化」といいます。 pickleモジュールを使って、例えば以下のよう

    sh19910711
    sh19910711 2023/03/05
    ".ckpt: 「pickle」というPythonのモジュールを用いて直列化して保存 / 悪意あるpickleオブジェクトを生成することが可能 / safetensors: HuggingFaceが主導 + 純粋なテンソル以上のものを保存できるが、カスタムコードは保存できない"
  • TabPFN - Qiita

    初めに このシリーズでは、機械学習数理最適化などの数理モデルのざっくりとした理論と実装コードを紹介します. 今回紹介するのは,TabPFNというテーブルデータのためのTransformerモデルです.論文では「小さな表形式データに対して1秒以内に教師あり分類タスクを実行でき,ハイパーパラメータのチューニングがいらない高精度のモデル」と紹介されています.精度としてはOpenML-CC18というデータセットの中の30個のデータセットでGBDTの性能を上回ったほか,AutoMLに対して同等の精度を70倍の速度で達成したそうです. 論文:TabPFN: A Transformer That Solves Small Tabular Classification Problems in a Second 目次 1. 概要 2. ざっくり理論 3. 実装 4. おわりに 5. 参考文献 1. 概要

    TabPFN - Qiita
    sh19910711
    sh19910711 2023/02/19
    2022 / "TabPFN: テーブルデータのためのTransformerモデル / PFN: ベイジアンニューラルネットワークと構造的因果モデルに基づき表形式データの根底にある複雑な特徴量の依存性と潜在的な因果構造をモデル化"
  • メタゲノムのイケてるネットワーク解析手法、WGCNA解説 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? メタゲノム解析でいけてる手法としてWGCNA(Weighted Gene Correlation Network Analysis)によるネットワーク解析がある 海洋微生物学だとDeLongのチームがよく使っている 例: https://www.nature.com/articles/s41564-017-0008-3 元々はマイクロアレイデータとかを念頭として作られたが、最近メタゲノム分野への応用が増えてきてる印象 論文 R実装について: https://bmcbioinformatics.biomedcentral.com/arti

    メタゲノムのイケてるネットワーク解析手法、WGCNA解説 - Qiita
    sh19910711
    sh19910711 2023/02/17
    2019 / "WGCNA: 遺伝子発現のデータやメタゲノムデータをクラスタリングする手法の一つ(ネットワーク解析の手法としても + 重み付けした相関ネットワークに基づきクラスタリング + サンプル数が多い時はかなり強力な手法"
  • Web Machine Learningについて – Rest Term

    W3Cが推進しているWeb Machine Learning (WebML)という取り組みについて少し調べてみました。今回は解説記事というわけではなく個人用のメモに近いので正確性についてはあまり自信がありませんが。。 Web Machine Learning (WebML)とは Web Machine Learning | Making Machine Learning a first-class web citizen W3C Web Machine Learning Working Group standardizes Web APIs for in-device machine learning inference working together with the W3C ecosystem using well-received Community Group incubatio

    sh19910711
    sh19910711 2023/02/09
    2021 / "WebML: W3CではAPI仕様の標準化を推進しており、そのAPIをWebNN APIと呼んでいます / WebNN: 計算グラフを構築するためのAPIが一通り定義 + TensorFlow.jsやONNX.jsなどの既存のフレームワークもWebNN対応するらしい"
  • Parquet+Petastormを使って画像分類モデルをSparkで学習させてみました! - CCCMKホールディングス TECH Labの Tech Blog

    こんにちは、CCCMKホールディングス技術開発の三浦です。 最近寒い日が続いています。寒いと温かい飲み物が欲しくなりますが、近ごろは緑茶を飲むようになりました。お湯を入れたらすぐに飲むことが出来る粉末タイプのものもあって、気軽に楽しむことが出来ます。 今回の記事は分散処理フレームワークSpark周りについて調べた内容です。普段深層学習モデルの分散学習をDatabricksを通じ、Sparkクラスタで行っています。その中で最近少し引っかかっていたのが画像やテキストなどのモデル学習用データを読み取る処理がボトルネックになっている点でした。この部分をどう改善すれば良いのかなかなか分かりませんでした。 今のデータの入力処理は特にSparkの特徴を活かしきれているとは言えず、TensorFlowやPyTorchのDataLoaderを通じて都度画像ファイルやテキストファイルを読み込んでモデルに入力さ

    Parquet+Petastormを使って画像分類モデルをSparkで学習させてみました! - CCCMKホールディングス TECH Labの Tech Blog
    sh19910711
    sh19910711 2023/02/09
    "Petastorm: 深層学習モデルにParquet形式のデータをDataLoader経由で入力 / make_torch_dataloader()というメソッドがあり / このオブジェクトの__enter__()を呼び出すとPyTorchのDataLoaderが得られます"
  • 機械学習における反実仮想説明(Counterfactual Explanations)を生成するライブラリ“DiCE”を活用したサービス開発についての考察 - AREKORE

    個人的に、機械学習における反実仮想説明(Counterfactual Explanations)*1を生成するPythonのライブラリ“DiCE”に興味を持ちました。そして、DiCEを活用したサービス開発について考察をしました。記事はその考察についてのメモです。 機械学習における意思決定を促進する説明 反実仮想説明を生成するDiCE DiCEとは? DiCEの使用方法と動作の紹介 DiCEを活用したサービスの例 DiCEを活用したサービス開発における課題と解決策 設計の工夫による現実に起こりうる反実仮想説明の生成 特徴間の関係を加味したクラスの設計 特徴の扱い方としての値オブジェクトの採用 複数の反実仮想説明に基づく施策の設計 反実仮想説明の関連研究 事実から反実仮想まで変動させるための状態遷移の考慮 記事のまとめ 機械学習における意思決定を促進する説明 機械学習を活用した予測において

    機械学習における反実仮想説明(Counterfactual Explanations)を生成するライブラリ“DiCE”を活用したサービス開発についての考察 - AREKORE
    sh19910711
    sh19910711 2023/01/28
    2021 / "DiCE: 予測結果に対して異なる結果が得られたであろう「入力の特徴量を変動させたサンプル」を生成 / 反実仮想を考慮し、意思決定の対象者が望ましい結果を得るために次に何をすべきかを決定するのに役立ちます"
  • 1ペタバイトのデータセットで機械学習する / WebDataset入門

    深層学習をする上で、最も大切なマシンスペックを聞かれたら何と答えますか? GPUのTensor性能、VRAM、GPUの数、CPU性能、メモリ、… 問題によって正解は異なりますね。 しかし、特に大規模なデータセットで機械学習する場合では、しばしばネットワーク帯域とストレージシステムのディスクI/Oによって制限されます。この記事ではそのような課題に対して、学習側でどのようにデータを扱うかを見ていきたいと思います。 1. この記事は? こんにちは、TURING MLチームです。TURINGはEnd-to-Endな深層学習モデルでLv5完全自動運転車の開発を目指す会社です。 私たちは自動運転モデルを動かすため、可視域のカメラセンサによる画像で学習し、カメラ映像のみから車体の操作や経路選択、安全性の判断を行わせています。(実際の車を動かす事例はこちらの記事をご覧ください。) そのため、機械学習のため

    1ペタバイトのデータセットで機械学習する / WebDataset入門
    sh19910711
    sh19910711 2023/01/20
    2022 / "WebDataset: 任意のストレージシステムにデータを数十~数百MBごとにシャーディング(分割)して配置 + 将来的にPyTorchのサブパッケージとして取り込まれるための提案がなされています / aws/amazon-s3-plugin-for-pytorch"
  • PyTorch-BigGraph: A Large Scale Graph Embedding System

    RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub

    PyTorch-BigGraph: A Large Scale Graph Embedding System
    sh19910711
    sh19910711 2022/12/30
    2019 / "PyTorch-BigGraph: Billion-Trillionサイズのエッジを持つグラフに対してGraph Embeddings / torch.distributed.{send/recv}を利用 / SysML 19: Adam Lerer, Pytorch-BigGraph: A Large Scale Graph Embedding System"