タグ

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

  • 評価関数をブリードすると何故強くなるのですか? | やねうら王 公式サイト

    評価関数を合成するのが流行っている。ここで言う合成とは、2つの評価関数のそれぞれのパラメーターを足して2で割ることである。ブレンドと呼ばれている。 1:1でブレンドする以外にも比率は自由に変更できる。また「ブレンド」という用語は、ダビスタになぞらえて「ブリード」とも呼ばれている。 しかしブリードすると何故強くなるのかについてはよくわからない。 将棋の評価関数、何故二つブレンドすると強くなるのかはよくわからないが、そういや機械学習とかで使う顔写真のデータセット、顔のパーツ(目・口・鼻)の位置を平均化すると結構イケメンになるんだけど、その原理とかは解明されてたりするのかな? — やねうら王 (@yaneuraou) July 13, 2017 顔のパーツの位置は両親のを遺伝的に引き継ぎ、(父+母)/2+ガウス分布であるとする。あまりに変な位置にパーツがあるとブサイクであり子孫を残せないのでいま

  • DeepLearningの解釈性の悪さについて | やねうら王 公式サイト

    Ponanza開発者の山くんがASCII.jpに記事を書いていて、これがまためちゃくちゃ面白い記事なので紹介しておきます。 電王・Ponanza開発者が語る、理由がわからないけどスゴイ“怠惰な並列化” http://ascii.jp/elem/000/001/253/1253340/ 実際、何故DeepLearningで画像の識別がうまくいくのかは、プログラマにはよくわからないところがありますね。どのニューロンが何の役割を担っているのかが可視化しにくいこととも関係しているのかも知れません。内部的な動作まで追いかけられないけど、何故かうまくいく。 DeepLearningで画像を認識して材をロボットアームで動かして調理するような調理ロボットが作られたとき、そのロボットはゴキブリを材だと誤認識する確率は0ではないです。限りなく0に近づけることは出来るかも知れないけども、トレーニングデータ

  • x86環境用にアライメント合わせるのが壊滅的に難しい件 | やねうら王 公式サイト

    やねうら王miniをx86(32bit環境)でコンパイルが通るように作業してたのですが、どうもアライメントを合わせるのが壊滅的に難しいです。 SSE命令を使うときに16byte単位にアライメントが合っていないと実行時にエラーになるものがあります。_mm_store_si128()等です。 まあそれはそれで仕方ないのでアライメントを合わせようとBitboardなどのstructにalignas(16)をつけたわけです。 ところが、ヒープから割り当てたときにはこれがアライメントされていない可能性があるようです。 thread.cpp template<typename T> T* new_thread() { std::thread* th = new T(); *th = std::thread(&T::idle_loop, (T*)th); return (T*)th; } > sourc

  • 1