タグ

ブックマーク / yaneuraou.yaneu.com (10)

  • Winnyの金子さんのED法について | やねうら王 公式サイト

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

  • 羽生先生の発言は何が開発者の反発を招いたのか? | やねうら王 公式サイト

    2つ前の投稿で羽生先生のインタビュー記事の発言を取り上げたらプチ炎上しました。私は特に炎上を狙ってやっているわけではなく、羽生先生の発言が将棋AI界隈に悪い影響が残り兼ねないので書いたのですが、開発関係者からは一定の同意が得られたものの、将棋ファンからは殺害予告やら、こんなツイートやらが届く始末です。 まあ、一線を越えているものに関しては関係各所と連携しつつ、粛々と対応させていただく次第です。(念のために言っておきますと、将棋ファンのすべてがこういう人たちばかりだとは私は思っていません。極一部にちょっとややこしい人がいらっしゃるという認識です。) この記事は大変長くなるので、「最新版のやねうら王が(お金を出してでも)欲しい!」と言う方や、「やねうら王の開発に支援してやる!」と言う方は、とりあえず、この記事の末尾のリンクから御支援くださいませ。 今回は、前回の羽生先生の発言を再度取り上げ、何

  • オセロの必勝法が見つかった件 | やねうら王 公式サイト

    すごいニュースが飛び込んできた。オセロの必勝法が見つかったのだ。正確に言うとオセロが弱解決された。まずはその論文を紹介する。 Othello is Solved : https://arxiv.org/abs/2310.19387 「弱解決(weakly solved)」を簡単に言うと、初期局面からの双方最善手を打つ時の結論(勝敗)がわかったと言う意味である。8×8のオセロの結論は引き分けなのだそうだ。「必勝法が見つかった」と記事のタイトルで書いたが、その結果として双方最善を尽くした時のオセロの結論が引き分けだったことが判明したので正しくは「必勝法(必ず勝てる方法)が存在しないことが証明された」とでも言うべきか。 今回は、初期局面から到達できるあらゆる局面についての結論(勝敗)がわかったわけではない。こちらは「強解決(strongly solved)」と呼ばれる。 弱解決と強解決とでは、

  • 機械学習エンジニアのための将棋AI開発入門その1 | やねうら王 公式サイト

    最近、機械学習を勉強している人が増えてきたので、簡単な機械学習ならわかるよといった人たち向けに将棋AIの開発、特に評価関数の設計について数学的な側面から書いていこうかと思います。線形代数と偏微分、連鎖律程度は知っているものとします。 3駒関係 3駒関係はBonanzaで初めて導入された、玉と任意の2駒との関係です。この線形和を評価関数の値として用います。評価関数とは、形勢を数値化して返す数学的な関数だと思ってください。 この3駒関係を俗にKPPと呼びます。King-Piece-Pieceの意味です。将棋の駒は40駒ありますので、{先手玉,後手玉}×残り39駒×残り38駒/2 通りの組み合わせがあります。この組み合わせは1482通りあります。Cをコンビネーション記号とすると、次のようになります。 $$ 2 \times {}_{39}C_{2}= 2 \times \frac{39 \tim

  • 角換りは終わったのかについて1万文字程度で | やねうら王 公式サイト

    先月のゴールデンウィークに行われた第33回世界コンピュータ将棋選手権(WCSC33)で弊やねうら王チームが準優勝したあと(この準優勝は当に準優勝であって、ビールにおつまみで乾杯するという意味ではない)、角換りという戦型について以下のツイートをした。 角交換と言う戦型が終わった。 1886局面の指し手を覚えるだけで先手側は公開されてる水匠(探索局面数は1億までの任意)に対して評価値+300に出来ることが証明された。 大会で上位のソフトは+300から逆転は97%ぐらいありえないので(手数で引分はある)つまりは将棋AIの世界では角交換の後手は必敗。 — やねうら王 (@yaneuraou) May 8, 2023 この前者のツイートにはインプレッションが172万もあり、Yahooニュースや朝日新聞デジタルなど多くのメディアで取り上げられた。 AIで角換わりが終わった? 藤井聡太竜王「こちらの立

  • 機械学習エンジニアのための将棋AI開発入門その2 | やねうら王 公式サイト

    前回の続き。将棋AIで最初に大規模機械学習に成功させたBonanzaの開発者である保木さんのインタビューがちょうどYahoo!ニュースのトップ記事として掲載されたところなので、今回はBonanzaの機械学習について数学的な観点から解説してみたいと思います。 Bonanzaの保木さんのインタビュー記事 プロ棋士に迫ったAI「Bonanza」 保木邦仁「将棋を知らないから作れた」 https://news.yahoo.co.jp/feature/1712 BonanzaのGPW発表スライド とは言え、Bonanzaで使われている機械学習の技法は、いまどきの機械学習とは少し毛色が異なるので心の準備が必要です。 まず、保木さんのGPW(ゲームプログラミングワークショップ)での発表スライド、以前はBonanzaの公式サイトからダウンロードできたのですが、Bonanzaの公式サイトがジオシティーズにあ

  • 魔女狩りはじめました | やねうら王 公式サイト

    クジラちゃんのクライアント部に使われている「Silent Majority」(以下、「魔女」と記す)というプログラムが強いということでその理由を考えてみました。(魔女のソースコードは全く読んでいません。) まず、ソースコードを読んだ人の感想から。 SILENT MAJORITYがかなり強い http://woodyring.blog.so-net.ne.jp/2016-05-07 要するにStockfish7 + Aperyの評価関数で、Stockfish7から探索パラメータのチューニングはそんなにしていないのではないかと。 今回のApery(WCSC26)は、Stockfish6をLazySMP対応して、探索パラメーターをかなりの労力を払ってチューニングしたものだと思うので、何故、これより魔女のほうが強いのかという話になるわけです。 私が思いつく限りの理由を挙げてみます。 1) Stoc

  • やねうら王オープンソースプロジェクト | やねうら王 公式サイト

    ソースコードのダウンロード先 https://github.com/yaneurao/YaneuraOu 導入手順 やねうら王のインストール手順 開発の目的 教育を目的として、現実的な将棋プログラム(Bonanza6より強い)が、2000行程度で書けることを示す。(当初、1000行程度を想定していたが、トップソフトと同等の指し手生成速度、実用に耐えうる将棋の思考エンジンフレームワークにしようと思ったため、行数がずいぶん増えた。Bitboardと指し手生成だけで1000行ぐらいある。) Bonanza6は空行を除くと25,863行。2015年11月電王トーナメント直後に公開された最新のAperyのソースコードは、空行と//によるコメント行を除くと9,612行。プロジェクトがいかに困難な目標設定であったかがわかる。 プロジェクトのために作者(やねうらお)が、1からソースコードを作成した。

  • やねうら王 公式サイト

    サイトのメインコンテンツ やねうら王 — 棋力的にトップ集団の将棋ソフトに比肩する将棋ソフト やねうら王オープンソースプロジェクト — やねうら王miniから最新のやねうら王までのソースコードと思考エンジン体 ふかうら王 — Deep Learningを採用した新しい時代の将棋ソフト たけわらべ — 利きだけを理解している新しい感覚の将棋ソフト Stockfish完全解析 — コンピューターチェスの強豪ソフトStockfishの完全解析 将棋電王戦  — 株式会社ドワンゴ主催の将棋電王戦。やねうら王は4年連続出場 コンピューター将棋全般 — コンピューター将棋全般の話題 プロコン — CODEVSなどプログラミングコンテストの話題 なお、この記事のここから下には新着記事が表示されています。

  • 連載やねうら王miniで遊ぼう!10日目 | やねうら王 公式サイト

    今回は、将棋所で遊べるランダムプレイヤーの作り方を説明していきます。 search.cppの4つの関数 search.cppのほうに次の4つの関数があります。自分で書く場合は中身は要らないので好きな様に書き換えて大丈夫です。 // 起動時に呼び出される。時間のかからない探索関係の初期化処理はここに書くこと。 void Search::init() … // isreadyコマンドの応答中に呼び出される。時間のかかる処理はここに書くこと。 void Search::clear() … // 探索開始時に呼び出される。 void MainThread::think() … // 探索体。並列化している場合、ここがslaveのエントリーポイント。 void Thread::search() …

    連載やねうら王miniで遊ぼう!10日目 | やねうら王 公式サイト
  • 1