2021年、ふとしたきっかけでオセロAIを作り始め、オセロAIコンテストに作ったAIを提出し、なんやかんやあって半年かけてそのコンテストで世界1位になりました。 それで満足…?と思いきや、全然満足せず、コンテスト関係なしにオセロAIを作って早3年。この記事ではオセロAIが色々なところに私を連れて行ってくれた話と、オセロAIが深いという話をします。 この記事は2年ほど前に書いていっぱい読んでいただけた以下の記事「カンゼンニリカイシタ話」の続編、みたいな立ち位置です。単体で読んでも、以下の記事と合わせて読んでも楽しめます。 世界1位からさらに高みを目指す 私が参加したオセロAIのコンテスト(CodinGame Othello)は、コンテストという特性上、かなり厳しい制約が設けられていました。例えば着手する時間です。これは1手あたり0.15秒以下でないといけません。また、コード長にも制限があり
TL;DR プログラムは「下から組む方法」と「上から組む方法」がある プログラムを組む時は少しずつテストしながら組む はじめに なにかゼロからプログラムを組むとします。そのプログラムのアルゴリズムや、何をやるべきかはなんとなくわかっているけれど、どこから手をつけてよいかがわからず、ChatGPTに全部書かせて、その後修正できずに困る、という事例を何度か観測しています。 プログラムをゼロから書くのは慣れが必要です。プログラムをゼロから書く場合、小さな部品を一つ一つ作っていって、最後にそれらを組み上げる「下から書く」方法と、「こういう関数が必要であるはず」と外枠から書いていって最後に中身を埋める「上から書く」方法があります。その一般論を論じるのは私の能力を超えるため、以下では「下から」と「上から」の例を挙げて、その「気持ち」を説明してみようと思います。言語はなんでも良いですが、ここではPyth
とても良い本が出ます 概要 構成 第1部:確率的で簡潔なデータ構造 第2部:ストリーミングデータ構造とアルゴリズム 第3部:外部記憶データ構造とアルゴリズム 具体的なコードは少な目 参考文献がしっかり書いてある 数式は最低限 図がモリモリ 翻訳版特有の情報 内容的な修正 カタカナ表記 検索のしやすさ 読む際のリズム 表現について 訳注について 音引きについて いきなりでごめんなさい(誤植情報) とても良い本が出ます 大規模データセットのためのアルゴリズムとデータ構造 作者:Dzejla Medjedovic,Emin Tahirovic,Ines Dedovicマイナビ出版Amazon 『大規模データセットのためのアルゴリズムとデータ構造』という本が7月26日発売に発売されます。原書はAlgorithms and Data Structures for Massive Datasetsとい
普段使うツールをRustで作る場合、コマンドラインベースのものが多いと思います。それでも、Rustを使ってデスクトップアプリを作ることもできます。今回は、実績のあるGUIツールキットの「Tcl/Tk」をラップしたクレートを使って簡単なGUIを作成してみましょう。 Rustで単位変換ツールを作ったところ GUIツールキット「Tcl/Tk」のインストール Rustのライブラリを集約したcrates.ioを見ると、多くのGUIライブラリが存在します。Rustはさまざまな環境で動作することを想定していることもあり、「これこそGUIの定番」というものはありません。多くの選択肢があり、用途に応じて使い分けるのが正しい作法です。 WebブラウザベースのTauri、ゲーム開発と相性の良いegui、GTK+を利用するGTK-rs、Tcl/Tkをラップしたライブラリのtcl/tkなど、いろいろなクレートがあり
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Implementing Nearest-Neighbour Recommendations in Ruby 原文公開日: 2023/08/28 原著者: Domhnall Murphy 日本語タイトルは内容に即したものにしました。 参考: 最近傍法 - Wikipedia Webのユーザーに関連度の高いコンテンツを自動的におすすめする機能は、Webの多くの機能を成功に導くうえで欠かせません。そのために多種多様な手法が利用されており、最大規模のWebサイトや企業では、非常に高度な技術を取り入れて推奨機能を最適化しています。本記事では、基本原理に基づいた効果的な推奨システムをRubyで構築する方法について解説します。 🔗 はじめに 以前の記事では、距離測定を導入してRubyで実装する方法を紹介しました。そのときに、それらの距離測
スイス連邦工科大学チューリッヒ校のラスムス・キン氏率いる研究チームが鉄道、道路、電力など、あらゆる種類のネットワークにおいて最小のコストで最大の輸送フローを計算するほぼ完璧なアルゴリズムを作成しました。計算速度は、「数学的にこれ以上は不可能」という速さだとのことです。 Researchers at ETH Zurich develop the fastest possible flow algorithm | ETH Zurich https://ethz.ch/en/news-and-events/eth-news/news/2024/06/researchers-at-eth-zurich-develop-the-fastest-possible-flow-algorithm.html 輸送フローアルゴリズムとは、例を挙げると東京から大阪までできるだけ多くの商品を輸送できる最速かつ最安
最初に 決定木の理論とフルスクラッチ実装とその解説というと、既に使い古された話題の様に感じてしまいますが、今回の記事から派生して、ランダムフォレスト、GBDT、XGboost(LightGBMは扱わないつもり)、因果木、因果フォレスト、ランダムフォレスト-learnerの理論とできる部分はフルスクラッチ実装、めんどくさいものは、理論と解説に抑えて扱っていこうと考えており、そのまず初めとして、決定木自体の理論に触れないことは、できないなと思い、決定木の記事を書こうと思った次第です。(めんどくさくなって書かないパターンも全然あり得るのでご了承ください)他の記事との差別化は、数式を含めた解説と、フルスクラッチ実装のコードと数式を絡めた解説みたいな感じで、初心者に超優しい解説記事みたいな感じで仕上げて見せると、書き始めは思っております。書いていくうちに、初心者に超優しくないじゃんみたいなことになっ
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Common Distance Metrics Implemented in Ruby 原文公開日: 2023/07/22 原著者: Domhnall Murphy 日本語タイトルは内容に即したものにしました。 metricsの訳語は原則として「測定」としています。 機械学習や人工知能の分野は、基本的に2点間の距離(distance)を測定する機能に依存しています。本記事では、よく用いられる測定方法のいくつかを紹介し、それらの解釈について説明するとともにRubyで実装する方法を示します。 🔗 はじめに 機械学習がらみのタスクの多くは、エンティティを「特徴(features)のセット」という観点で記述することから始まります。 たとえばテキストベースの学習タスクであれば、おそらく語(word)ごとの出現頻度が特徴となるでしょうし、
NTTは、2024年6月25日、グラフ探索を高速化するアルゴリズムを開発したことを発表した。 多くの情報は事物のネットワーク構造として解釈可能であり、そのつながりを「頂点」と「辺」で表現するグラフは、都市インフラやAI、セキュリティ、創薬などの分野で重要視されている。 このグラフデータの活用に向け、同社ではグラフ処理における基礎的な要素技術であるBFS(幅優先探索)の研究を続けてきた。BFSは、グラフ全体の頂点を近い順に辿る計算方法となる。 木構造の事前分離により BFS木構築を高速化 今回NTTが確立したのは、「Forest Pruning」という、始点から近い順に頂点を辿るための「BFS木」の構築を高速化するアルゴリズムだ。 まず、事前計算でグラフの一部(木構造部分)を分離。始点が与えられた際に、残ったグラフで頂点を辿って部分的なBFS木を構築する。そこに分離しておいた木構造部分を接合
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く