タグ

algorithmに関するakishin999のブックマーク (329)

  • Raftとは? 仕組みから考える得意なこと苦手なこと/What is Raft? Strengths and Weaknesses Based on Its Mechanism

    -- 追記-- > termの説明で「今のリーダーが何代目のリーダーかを表す」と書かれていますが、あるterm内でリーダーが1人も選出されないことがあるので、termで何代目のリーダーかは表せなくないですか? https://x.com/11Takanori/status/1801212885873602681 termは必ずしもリーダーを示すものではなく、また票割れや投票前の段階ではリーダーを指すとは限りません。 Raftの論文では > Terms are numbered with consecutive integers. といっており、リーダーかどうかは問いません > log indexは単にlog entriesの中の当該logの位置を示すものなので、「今のリーダー」に言及しないほうが良さそう https://x.com/komamitsu_tw/status/180125035

    Raftとは? 仕組みから考える得意なこと苦手なこと/What is Raft? Strengths and Weaknesses Based on Its Mechanism
  • ED法と3値(+1,-1,0)のアイデアを元に新しい活性化関数(ExP2)を作ってGELU、ELUと性能比較してみた。MINIST精度 99.43%以上達成 - Qiita

    ED法と3値(+1,-1,0)のアイデアを元に新しい活性化関数(ExP2)を作ってGELU、ELUと性能比較してみた。MINIST精度 99.43%以上達成DeepLearningPyTorch活性化関数誤差逆伝播法ED法 追記 ELUとの比較を追加しました、金子さんのアイデアの凄さが明確に結果に出ています。 また最後にニューロンが正・負どちらに発火しているのか可視化したチャートも追加しました。 初めに 誤差逆伝播法を用いずに、興奮性・抑制性ニューロンの出力を調整することでニューラルネットワークの学習を進める金子さんの誤差拡散法はとても衝撃的でした。 しかし、誤差拡散法は現在広く使用されているニューラルネットワークのアーキテクチャとは互換性がないため、 今すでに利用されているニューラルネットワークに興奮性、抑制性ニューロンのアイデアを直接反映できません。 そのため、今の誤差逆伝播法の範囲内

    ED法と3値(+1,-1,0)のアイデアを元に新しい活性化関数(ExP2)を作ってGELU、ELUと性能比較してみた。MINIST精度 99.43%以上達成 - Qiita
  • 金子勇さんのED法の解説と弱点、行列積を使用した効率的な実装 - Qiita

    はじめに 先日以下の記事が話題となり、とてもワクワクしたので自分も実装して色々実験してみました。 実装するうちに理解が深まったので一度、 誤差拡散法の元ネタ紹介から 数式の解説、 ED法の弱点、 行列計算を使用した実装と簡単なテスト結果、 実装上の工夫 までまとめてみたいと思います。 誤差拡散(Error Diffusion)法 もともとは画像の2値化において失われる情報を周囲のピクセルで補うことで、遠目に元の画像の濃淡が残っているように見せる技術(ハーフトーン処理の一種)です。 Error diffusion -Wikipedia英語版) 左の画像をちょうど半分の明るさをしきい値として2値化すると中央の画像のようになりますが、誤差拡散法を適用すると2値化後も右の画像のようにある程度濃淡を保存・表現できます。 誤差拡散法(画像処理)のサンプルコード コメントアウト箇所はFloyd, St

    金子勇さんのED法の解説と弱点、行列積を使用した効率的な実装 - Qiita
  • LEIA: 言語間転移学習でLLMを賢くする新しい方法

    Studio Ousiaと理化学研究所に所属している山田育矢です。 この記事では、大規模言語モデル(LLM)の性能を向上させる新しい方法であるLEIA(Lightweight Entity-based Inter-language Adaptation)を紹介します。 LLMは言語によって性能に顕著な差があり、訓練に使われるテキストが最も多い英語において特に性能が高い傾向があることが知られています。LEIAは、LLMが蓄えている英語の知識を他の言語から使えるようにする訓練を施すことで、英語以外の言語でのLLMの性能を向上させる新しい手法です。 この度、英語・日語の2言語LLMであるSwallowの7Bと13Bのモデルに対してLEIAによる訓練を施して性能向上を行ったモデルを公開します。 ライセンスは、Swallowと同様のLlama 2 Community Licenseです。これらのモ

    LEIA: 言語間転移学習でLLMを賢くする新しい方法
  • 金子勇さんのED法のシンプルな解説を試みた - Qiita

    はじめに @pocokhc(ちぃがぅ)さんが、金子勇さんのED法を実装してMNISTの学習に成功しました。 金子勇さんの失われたED法 金子勇さんの失われたED法発掘の経緯 ここではちぃがぅさんのコードを元に、ED法をシンプルに解説していきたいと思います。 ED法をわかりやすく解説するため、今入力を(1,0)としたとき(0)を推論するXOR問題を考えてみましょう。 ED法の場合, 入力、重みともに正負(p,n)2つ分の変数を用意する必要があります。 例えば 入力を(1,0)とすると 1 (p) ,1 (n), 0 (p), 0 (n) の4つとバイアス分の2つの p n が必要です。 また, 3層構造として中間層のニューロンをp, n 2つのみとします。 中間層のニューロンを2つとしたときは、 p, n の2つと, バイアス用のp, n の2つが必要です。 中間層のニューロン各々は、そのニ

    金子勇さんのED法のシンプルな解説を試みた - Qiita
  • Winnyの金子さんのED法について | やねうら王 公式サイト

    Winnyの金子勇さんが考案された機械学習アルゴリズムED法を再現して実装した人がいていま話題になっている。 『Winny』の金子勇さんの失われたED法を求めて…いたら見つかりました https://qiita.com/kanekanekaneko/items/901ee2837401750dfdad いまから書くことは私の記憶頼りなので間違ってたらコメント欄で教えて欲しい。 1998年ごろだと思うのだが、私はWinnyの金子勇さんのホームページの熱心な読者だった。(ページも全部保存してたので私のHDDを漁れば出てくると思うが、すぐには出せない。) Winnyのβ版が発表されたのが2002年なのでそれよりはずいぶん前である。 当時、金子さんはNekoFightという3D格闘ゲームを公開されていた。そのゲームには、自動的に対戦から学習するAIが搭載されていた。 当時の金子さんのホームページの

  • 『Winny』の金子勇さんの失われたED法を求めて - Qiita

    普段は「通知が迷惑かなー」と思ってブックマークしていただいている方に通知せず記事を編集しているのですが、この記事をブクマしていただいている方は続きが気になっている方だと思いますので通知させていただきます。 結論から言うと、この記事を読んだ @pocokhc (ちぃがぅ)さんという方が金子勇さんが書いたED法のサンプルプログラムを見つけてくださいました。 ちぃがぅさんの記事はこちら 自分で解明したかったという気持ちも無いことは無いですが、バズった時点で誰かが実装してくれそうな気はしていました。新卒からIT業界に入って4年目が始まったところですが、業務以外で初めて業界にコントリビュートできた気がして嬉しいです! 追記ついでに、謝罪します。初回公開時に記事タイトル含め文中で何か所か「Winney」と書いてしまっていた箇所がありました。失礼いたしました。誤字修正してあります。指摘してくださった何

    『Winny』の金子勇さんの失われたED法を求めて - Qiita
  • 【実践】エンジニアの基礎教養-アルゴリズムを学べる本

    筆者は新卒エンジニア時代に社内でアルゴリズム勉強会を主催していました。 その内容を形式に書き起こしたものになります。 【このの特徴】 📗問題演習形式でアルゴリズムの基礎が身に付く構成となっています。 📗分かりにくい概念は丁寧に図解で解説しています。 📗基礎的なアルゴリズムがどのように世の中に役立っているのかを言及しています。 アルゴリズムに関して、皆さんの理解を深めるお手伝いができれば幸いです。

    【実践】エンジニアの基礎教養-アルゴリズムを学べる本
  • (続)ファッションにおける類似商品検索アルゴリズムの性能評価 - DROBEプロダクト開発ブログ

    概要 背景・目的 関連研究 提案手法 実験 アルゴリズムの説明 順位相関の確認 定量評価 定量評価の内訳 定性評価 おわりに 参考文献 DROBEで機械学習エンジニアをしております、藤崎です。 概要 ファッションアイテムを特徴づけるための情報として、画像とテキストがある。これらは異なる情報を含んでいると考えられる。 類似のファッションアイテムを検索する場面で、画像とテキストの情報を両方活用することで、検索の精度を向上させることができると推測される。 類似のファッションアイテムを検索するタスクで、両方の情報を活用した提案手法の性能を評価し、片方の情報だけを活用するよりも、大幅に性能が改善することを確認した。 背景・目的 この記事は以下の記事の続編です。 tech.drobe.co.jp 以前の記事で、私たちはプロのスタイリストが作成した評価データセットを用いて、複数のアルゴリズムを類似商品検

    (続)ファッションにおける類似商品検索アルゴリズムの性能評価 - DROBEプロダクト開発ブログ
  • Othello is Solved 論文解説 (私見) - Qiita

    今朝起きたら、とんでもない論文を見つけました。 Othello is Solved ゲームの オセロが"解かれた(弱解決)" というのです。飛び起きました。それで、16時まで二度寝してから読みました。 注意すべきは、この論文が査読を経て公開されているわけではないこと、つまり形式上特にチェックを受けたものではないことです。ただ、タイトルからして非常に衝撃的ですので、個人的に読んでみました。この記事では、私がこの論文(およびソースコード)を読んでわかったことを、なるべくわかりやすくまとめます。随時更新します。 余談ですが、このタイトルはどうやら、チェッカーというゲームが以前弱解決された際の論文"Checkers Is Solved"のオマージュだろうという話です。 この記事には専門用語が出てくるので、最後の方に基礎知識として重要な用語や知識をまとめました。 お詫びと訂正 この記事の内容は、私が

    Othello is Solved 論文解説 (私見) - Qiita
  • いろんなバンディットアルゴリズムを理解しよう - Qiita

    今回は、何も知らないところからバンディットアルゴリズムを学びました。 シンプルなバンディットアルゴリズムから、各ユーザーごとに最適化するContextual Bandit、順序を最適化するCascading Banditまで解説します。 学んでいて疑問に思ったことを解消しつつ記載しています。 ソースコード https://github.com/birdwatcherYT/bandit 対象読者 バンディットアルゴリズムを理解して実装したい人 ユーザーごとにカスタマイズしたバンディットを理解して実装したい人(Contextual Bandit) 順序を最適化するバンディットを使いたい人(Cascading Bandit) バンディットアルゴリズム バンディットの問題設定を説明します。 スロットマシンN台がある スロットマシンの腕を引くと報酬がもらえる 累積報酬を最大化したい バンディットアル

    いろんなバンディットアルゴリズムを理解しよう - Qiita
  • プロンプトを遺伝的アルゴリズムで自動最適化するプロンプトエンジニアリング手法『Promptbreeder(プロンプトブリーダー)』 | AIDB

    関連研究 ■GPT-4などのLLMに「自らの論理的な整合性をチェック」させるフレームワーク『LogiCoT』と実行プロンプト ■LLMの出力から誤り(ハルシネーション)を減らす新手法『CoVe(Chain-of-Verification)』と実行プロンプト ■LLMに自身のハルシネーション(幻覚)を「自覚」させ、減らす方法 従来の課題 手作りのプロンプト戦略 現在、プロンプトエンジニアリングの分野で広く用いられているChain-of-Thought(CoT)やその派生テクニックは、基的には手作りです。特定のタスクや問題に対して最適なプロンプトを設計する際に、人の専門家が手動でプロンプトを生成しています。 自動化の必要性 手作りのアプローチは効果的である場合も多いですが、スケーラビリティに欠けるという問題があります。大規模言語モデル(LLM)が多様なタスクで使用される現代においては、プロン

    プロンプトを遺伝的アルゴリズムで自動最適化するプロンプトエンジニアリング手法『Promptbreeder(プロンプトブリーダー)』 | AIDB
  • MySQLのインデックスですが、B-treeではなくB+treeを使用するのはどうしてなのでしょうか? | mond

    MySQLのインデックスですが、B-treeではなくB+treeを使用するのはどうしてなのでしょうか? 端的に言うと性能が良いからです。 これを理解するにはバッファプールへの理解が必要です。ディスク指向のデータベースの上では有限のメモリを最大限活用することでメモリに入り切らない巨大なデータ群に対して良好な参照性能を出す必要があります。バッファプールとはディスク上のデータの羅列を固定サイズのページ(InnoDBの場合16KB)の羅列であるとして読み書きに必要な分だけをメモリに移し取り複数の書き込みをできる限りメモリ内で受け止めて後でまとめてディスクに書き戻すという、ライトバック型のキャッシュのような機構です。 この中においてバッファプールは有限のサイズしか無いので適宜プール内のデータを書き戻して入れ替えながら上手くやっていく必要があります。 さてB+treeとB-treeの最大の違いは木のリ

    MySQLのインデックスですが、B-treeではなくB+treeを使用するのはどうしてなのでしょうか? | mond
  • グラフアルゴリズム実践活用術

    情報オリンピック夏季セミナー 2023: https://jcioi-summer-seminar-2023.peatix.com/ での講演スライドです。 講義概要: アルゴリズムを勉強していると,グラフアルゴリズムにたくさん出会います.しかし,グラフアルゴリズムが現実世界でどのように活躍しているのかについては目に触れる機会はあまりありません.講演では,実社会で登場するグラフデータについての問題と,どのようなグラフアルゴリズムがそれらの問題を解決しているかについてご紹介します. ノイズ除去のソースコード: https://colab.research.google.com/drive/1Mdr3KGrwuX9jAWHk5pVGH2HaUmLmR-jB?usp=sharing 背景除去のソースコード: https://colab.research.google.com/drive/1vm

    グラフアルゴリズム実践活用術
  • 徐々に高度になるリングバッファの話 - Software Transactional Memo

    リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit

    徐々に高度になるリングバッファの話 - Software Transactional Memo
  • 半開区間の魅力 〜プログラミングでのスマートな区間の扱い方〜 - Qiita

    はじめに こんにちは、kenです。 今回は「プログラミングで区間を扱いたいときは半開区間が良いよ」という話をします。 もしかしたら有名な事実かもしれませんが、友達にこの話をしたら知らなかったという顔をされたので、自分の理解を深めるためにも記事にすることにしました。 数学で区間を扱う際は実数上で考えることが多いかと思いますが、この記事では区間を考える際、整数全体の集合上での区間を考えることにします。 また以下ではleft(またはl)とright(またはr)という文字式を使って説明しますが、このときleft $ \leq $ rightという関係性は常に満たされているものとします。 半開区間とは? 半開区間の前に、開区間と閉区間についておさらいしておきます。 開区間は(left,right)のように表され、両端点を含まないleftからrightまでの区間を表します。 一方で閉区間は[left,

    半開区間の魅力 〜プログラミングでのスマートな区間の扱い方〜 - Qiita
  • DeepMind、AIで人間考案のものより優秀なソートアルゴリズムを発見 最大70%高速化

    Google傘下のAI企業Google DeepMindは6月7日(現地時間)、アルゴリズムを開発するAIAlphaDev」が、人間が考えたものより高速なソートアルゴリズムを発見したと発表した。 ソートアルゴリズムは、入力されたデータを一定のルールに基づいて並べ替えるもの。ネット検索結果の並べ替えやランキング制作などIT技術の根幹を担う技術の一つ。今回AlphaDevが考案したアルゴリズムは既存のものに比べて、少量のデータなら最大70%、数十万規模の大量のデータなら約1.7%速く処理できた。 DeepMindはAlphaDevに新しいアルゴリズムを発見させるため、ソートの作業を「組み立てゲーム」としてプレイさせた。「正確にソートできる」「既存のアルゴリズムより高速である」という2点を満たせばクリアとした。 関連記事 OpenAIやDeepMindのCEOやトップ研究者ら、「AIによる人

    DeepMind、AIで人間考案のものより優秀なソートアルゴリズムを発見 最大70%高速化
  • プログラムを動かす時にメモリがどのように割り当て・解放されるのかをめちゃくちゃわかりやすいイメージ画像で解説してくれるサイト「Memory Allocation」

    コンピューター上でプログラムを動作する際に必要になるのがメモリです。プログラム自体をメモリに読み込む必要があるのはもちろん、プログラムが行う動作はほとんど「メモリから値を取りだして計算し、メモリに保存する」であるといっても過言ではありません。プログラムが動作する際にメモリがどのように管理されているのかについて、ベテランプログラマーのサム・ローズさんがブログで解説しています。 Memory Allocation https://samwho.dev/memory-allocation/ C言語の標準ライブラリには「malloc」と「free」という2つの関数が用意されています。この2つはなんと1979年のUnix v7から存在している歴史ある関数で、mallocがメモリの割り当てを担当し、freeがメモリの解放を担当しています。サム・ローズさんの解説は「この2つの関数の中身を自分で実装する」

    プログラムを動かす時にメモリがどのように割り当て・解放されるのかをめちゃくちゃわかりやすいイメージ画像で解説してくれるサイト「Memory Allocation」
  • Load Balancing

    Past a certain point, web applications outgrow a single server deployment. Companies either want to increase their availability, scalability, or both! To do this, they deploy their application across multiple servers with a load balancer in front to distribute incoming requests. Big companies may need thousands of servers running their web application to handle the load. In this post we're going t

    Load Balancing
  • 30分で完全理解するTransformerの世界

    はじめに 初めまして。ZENKIGENデータサイエンスチームのはまなすです。正式な所属はDeNAデータAI技術開発部なのですが[1]、業務委託という形で今年度から深層学習系の開発等に携わっています。 深層学習界隈では、2017年に衝撃的なタイトル(Attention Is All You Need)の論文が発表されてから早5年半、元出自の機械翻訳タスクを大きく越えて、Transformer関連の技術が様々な領域で用いられる汎用アーキテクチャとして目覚ましく発展し続けています。 今回はそんなTransformerが現時点までにどのように活用されてきたか、また、どのように工夫されてきたかをざっくりと俯瞰し、流れをおさらいする目的の記事になります。記事の大枠は、2021年時点でのサーベイ論文である A Survey of Transformers に倣いつつ、適宜、2023年2月上旬現在ま

    30分で完全理解するTransformerの世界