TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

2022-01-01から1年間の記事一覧

中盤互角局面集

先日、dlshogiと水匠が互角になる探索ノード数を調べたが、初手開始局面からdlshogiはランダムありで測定していた。 初手開始局面からだと、dlshogiは序盤で優勢を築いてそのまま勝つ場合が多いため、中終盤の精度が測定できていない可能性がある。 そこで、…

将棋AI実験ノート:dlshogiと水匠で評価値の割れる局面の精度改善

第3回世界将棋AI電竜戦では、先手の角換わり定跡で、dlshogiが後手番で後手優勢と評価している局面から、定跡を抜けてから反省して負けることがあった。 dlshogiと水匠で評価が分かれる場合、dlshogiが正しくてそのまま勝ち切ることも多いが、特に中盤以降で…

拡散モデルの実装を理解できるノートブック

拡散モデルの実装を理解するために、こちらのノートブックがとても分かりやすかったので紹介する。 diffusion-models-class/unit1 at main · huggingface/diffusion-models-class · GitHub拡散モデル(DDPM)を、以下のように段階的に実装して確認できるように…

floodgateの戦型別先手勝率の変化

先日の第3回世界将棋AI電竜戦では、水匠の先手角換わり定跡の勝率の高さが注目された。 そこで、最近の将棋AI同士の対局で、戦型別の勝率に変化があるか調査した。以下の調査では、戦型の分類にMizarさんが公開されているjsonの定義ファイルを使用している。…

どの駒が評価値に寄与しているかを可視化する

dlshogiのモデルに盤面を入力すると、その盤面の評価値(勝率)を出力できる。 その際、どの駒が評価値に寄与しているか可視化できると、AIがどこに注目しているのかがわかる。 以前に、Attention Branch Networkを使って可視化を試したが、今回は、駒を除くと…

将棋AIの進捗 その60(固定プレイアウトで水匠5と互角になる条件)

dlshogiの棋力測定する際に、dlshogiの過去のバージョンとの対局だとレーティング差が実際よりも大きくなる傾向がある。 そこで、棋力測定では水匠5を加えてリーグ戦で連続対局している。普段の棋力測定では、対局条件をフィッシャールールの持ち時間で対局…

将棋AIの進捗 その59(第3回電竜戦で見つかった課題と対策検討)

第3回電竜戦では、水匠が準備した先手番角換わりの長手数の定跡が、dlshogiの盲点を突いていて定跡を抜けた時点で大差になっていた。具体的には、以下の局面の85手目の8三角打が先手優勢であることをdlshogiが見つけらず、盲点となっていた。 8三角打から…

将棋AIの進捗 その58(訓練の省メモリ化と高速化)

現状のdlshogiのモデルの訓練の実装では、訓練データが多い場合にメモリを大量に消費する課題があった。dlshogiのモデルの訓練は、訓練データをすべてメモリに読み込んで処理を行っている。 そのため、一度に学習できるデータはメモリに読み込める分に制限さ…

第3回世界将棋AI電竜戦 結果報告

週末(12/3,4)に開催された第3回世界将棋AI電竜戦に参加しました。HEROZチームとして、「dlshogi with HEROZ 30b」と「dlshogi with HEROZ 20b」という2つのソフトでエントリしました。 大会の概要 世界将棋AI電竜戦は、コンピュータ将棋開発者の有志により立…

DeepNash(R-NaD)でクーン・ポーカーを学習する

DeepMindがArxivで発表したDeepNash(R-NaD)がOpenSpielに実装されたので試してみた。 ※2022年12月にScienceにも掲載されました。 DeepNash(R-NaD) DeepNash(R-NaD)は、不完全情報ゲームで探索なしでナッシュ均衡に収束するモデルフリーの深層強化学習アルゴ…

将棋AI実験ノート:30ブロックの学習

dlshogiのモデルサイズは、10ブロック192フィルタから初めて、精度が飽和するたびに、15ブロック224フィルタ、20ブロック256フィルタと段階的に大きくしている。参考: 将棋でディープラーニングする その48(ResNet) - TadaoYamaokaの開発日記 第2回 電竜戦T…

アニメデータセットでリコメンドを試す(NMF編)

少し古いがWEB+DB PRESS Vol.129のレコメンドエンジンの記事を読んでいて、勉強のために記事とは異なるデータセットで試したいと思った。記事ではMovieLensのデータセットで使っているが、アニメレビューのデータセットを使って試してみた。 モチベーション …

PCで再生中の音声をWhisperでリアルタイムに文字起こしする

PCで再生中の音声をリアルタイムで文字起こしできると、字幕機能がない動画の再生や、外国とのオンライン会議で便利である。先日、OpenAIが公開したWhisperは、音声ファイルから文字起こしするするツールが提供されているが、リアルタイムで処理するツールは…

いらすとやでDreamboothを試す

先日、いらすとやの画像でTextual Inversionを試したが、今回は同じく数枚の画像でスタイルを学習するDreamboothを試してみる。Dreamboothは、元は、GoogleのImagenに対して適用された手法だが、Stable Diffusionに適用できるようにした実装が公開されたので…

【TIPS】 Stable Diffusion web UIの起動を速くする

AUTOMATIC1111版Stable Diffusion web UIは、起動時にCLIPの学習済みモデルを取得するために、HuggingFaceにアクセスを行う。 初回は、実際に学習済みモデルのダウンロードが必要だが、2回目以降はキャッシュされるために、ローカルストレージのキャッシュが…

Whisperとゲームバーで会議議事録作成を自動化する

先日、OpenAIが公開したオープンソースの音声認識ソフトウェアのWhisperを使って、会議議事録を自動作成する方法について記載する。昨今、オンライン会議が主流になっているため、会議を録画/録音することが容易になっている。 Windows 10/11には、Xbox Game…

WindowsにWhisperをインストールする

先日、OpenAIが公開したオープンソースの音声認識ソフトウェアであるWhisperをWindowsにインストールする方法について記載する。 Anaconda(Miniconda)のインストール Anacondaもしくは、Minicondaをダウンロードして、インストールする。 必要に応じて仮想環…

いらすとやでTextual Inversionを試す

Stable Diffusionの追加画像によるスタイル学習の方法として、「Textual Inversion」という方法がある。これは、3~5枚の画像を用いて、スタイルを表す新規の単語の埋め込みベクトルを学習する方法である。 既存のパラメータは一切更新しないで、既存モデルに…

Stable Diffusionを「いらすとや」で追加学習する

前回、Stable Diffusionをdanbooruデータセットを使用して追加学習することを試した。今回は、自分でデータセットを作成して追加学習することを試す。 データセットには、画像とキャプションが揃っている必要があり、キャプションがない場合はCLIPで疑似ラベ…

Stable Diffusionにdanbooruデータセットを追加学習する その2

前回、danbooruデータセットを使用してStable Diffusionに追加学習を行う手順について記載した。今回は、追加学習したモデルで、生成する画像がどう変わるか確認する。 追加学習の結果 98エポックまで学習を行った。 エポック数とステップ数 エポック数とス…

Stable Diffusionにdanbooruデータセットを追加学習する

Stable Diffusionに独自データセットで追加学習できるようになるために、まずは既存のデータセットを使用した学習方法を試した。追加学習の方法には、画像3~5枚を用いてスタイルを学習させるTextual Inversionという方法があるが、ここでは追加学習にデータ…

Latent Diffusionの学習を試す その2

昨日の記事の続きで、CelebA-HQデータセットでLatent Diffusionの学習を続けた場合に生成画像の質が上がるか確認した。昨日の記事で、5000バッチ(51エポック)時点のモデルで、潜在空間からランダムにサンプリングして生成した画像は以下の通りであった。 学…

Latent Diffusionの学習を試す

話題のStable Diffusionは、 LAION-5Bデータセットを用いて学習された、CLIPのテキスト埋め込みを条件としたLatent Diffusionモデルである。Stable Diffusionの仕組みを理解したいと思っており、そのために、まずは比較的小さいデータセットでLatent Diffusi…

stable-diffusion-webuiをWSL2で動かす その2

昨日導入方法を書いたstable-diffusion-webuiにGFPGANとRealESRGANを導入する。GFPGANは、顔を改善するモデルで、RealESRGANは解像度2倍にするモデルである。 それぞれ適用した場合の比較画像は、公式のページにサンプルがある。 GitHub - hlky/stable-diffu…

stable-diffusion-webuiをWSL2で動かす

この議事の内容は古いです。現在この手順では動きません。Stable Diffusionが公開されて一週間もたたないうちに便利なUIがいくつもリリースされている。 その中でも、stable-diffusion-webuiが機能が充実している。 GitHub - hlky/stable-diffusion-webui: S…

Stable Diffusionを試す

拡散モデルを使用した画像生成AIであるStable Diffusionがオープンソースで公開された。 ソースだけでなくモデルの重みも自由に利用できる。商用利用も可能だ。Stable Diffusion Public Release — Stability.Ai早速、ローカルのPCで試してみた。 丁寧な使っ…

timmのモデルを可視化する

timmのモデルはソースが複雑なため、ソースからモデルの構造を理解するのは大変である。 そのため、モデル構造を可視化できると理解しやすい。以下では、PyTorchのTensorBoardで、モデル構造を可視化する方法を紹介する。 TensorBoardでグラフ表示 TensorBoa…

nnue-pytorchを試す その3

前回、nnue-pytorchでdlshogiの棋譜を学習して、floodgateの棋譜でテストを行うと、評価損失(val_loss)が上昇する事象が起きることを書いた。いろいろ条件を変えて実験したところ、最適化をデフォルトのRanderから、Momentum SGDに変更すると評価損失(val_lo…

将棋倶楽部24万局集の統計

昨日の記事で書いた通り、「将棋倶楽部24万局集」のデータベースを読めるようになったので、棋譜の統計情報を調べた。 期間 1999年5月から2002年2月のデータが格納されている。 ほとんどは、2001年9月以降のデータである。 count 240000 unique 159 top 2001…

将棋倶楽部24万局集をCSAに変換

以前に棋譜から棋力測定を試した際に、中古で「将棋倶楽部24万局集」を買ったが結局使わずに眠らせていた。 せっかく買ったので棋譜を分析してみようとCDROMを開いたらデータ形式が棋泉というソフトの形式で、一括で処理しようとすると変換が必要であること…