<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>遺伝的アルゴリズム on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/%E9%81%BA%E4%BC%9D%E7%9A%84%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0/</link>
		<description>Recent content in 遺伝的アルゴリズム on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Fri, 23 Apr 2021 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/%E9%81%BA%E4%BC%9D%E7%9A%84%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Triangula - 画像を三角形の集まりに変換するツール</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/</link>
				<pubDate>Fri, 23 Apr 2021 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/RH12503/Triangula&#34;&gt;&lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/triangula-logo.svg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/RH12503/Triangula&#34;&gt;Triangula&lt;/a&gt; は、Go言語で書かれたオープンソースの画像変換ツールで、写真などの画像を小さな三角形の集合体に変換するものです。&lt;/p&gt;&#xA;&lt;p&gt;適当な画像で試してみました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/mutton-soba.jpg&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/mutton-soba_hu_db35f87a4af0e18.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/mutton-soba_hu_cad67034655df784.webp 768w, https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/mutton-soba_hu_fcd220706b6d48b9.webp 800w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/mutton-soba.jpg&#34; width=&#34;800&#34; height=&#34;600&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;これが、(変換のごく途中の状態でまだ荒いですが)以下のようなSVGファイルになりました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/mutton-soba.svg&#34;&gt;&lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/04/triangula-converts-image-triangles/mutton-soba.svg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://rh12503.github.io/triangula/&#34;&gt;ブラウザで動くプレビュー版&lt;/a&gt;も公開されていて、簡単に試すことができます。変換の速度はかなり遅いということで、CLI版を手元で動かした方が良いと思いますが。&lt;/p&gt;&#xA;&lt;p&gt;面白いアート効果として使うとか、写真に映った個人情報等の匿名化をするとか、(画像の内容によっては)ファイルサイズ軽減に使うとか、使い方はアイデア次第でしょうか。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;https://news.ycombinator.com/item?id=26899066&#34;&gt;Hacker News&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>invaderz - 遺伝的アルゴリズムで動きを変えるインベーダー風ゲーム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2018/10/invaderz-genetic-algorithm-invaders/</link>
				<pubDate>Wed, 31 Oct 2018 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2018/10/invaderz-genetic-algorithm-invaders/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/victorqribeiro/invaderz&#34;&gt;victorqribeiro/invaderz&lt;/a&gt;は、上から襲い掛かるインベーダーを砲台で撃ち落とす JavaScript のゲームです。&lt;/p&gt;&#xA;&lt;p&gt;一回に6匹降りてくるインベーダーを、地上に近づけないように撃ち落とす必要があります。合計で5匹が地上にたどり着いたら、ゲームオーバーとなります。また、6匹の攻撃が終わると、新たに次の6匹が登場します。&lt;/p&gt;&#xA;&lt;p&gt;攻めてくるインベーダーの形はランダムに打たれたドットのパターンなのですが、このドットの形に応じて、どのように動くのかが表されています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2018/10/invaderz-genetic-algorithm-invaders/invaderz.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2018/10/invaderz-genetic-algorithm-invaders/invaderz_hu_58237e746a01ad5f.webp 307w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2018/10/invaderz-genetic-algorithm-invaders/invaderz.png&#34; width=&#34;307&#34; height=&#34;567&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;設定によると、撃ち落とされた瞬間のインベーダーは、母船に対して「どこまで侵攻できたか」の情報をアップロードし、次の世代では、優秀な結果を残したインベーダーの形を掛け合わせた攻撃隊が編成されます。&lt;/p&gt;&#xA;&lt;p&gt;この次の世代を生産する時に、優秀だった個体からランダムに上下半分ずつや左右半分ずつの形をコピーしたりして新しい世代を作ることで、これまで良い結果を出したインベーダーの特徴を併せ持つ世代が作られる、ということになります。(この際に、10%の割合で突然変異も起こります) この当たりはソースコードの Genetics.js を見るとなんとなくわかります。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://victorribeiro.com/invaderz/&#34;&gt;動くデモ&lt;/a&gt;も公開されていますが、今はアクセスしづらくなっているようです。ソースコードを持ってくれば手元で簡単に動かすことはできました。&lt;/p&gt;&#xA;&lt;p&gt;30世代ほど遊んでみましたが、後半になると確かにインベーダーの動きが左右に大きくなり、狙った弾を避けている(避けているように見える、だけですが)ことは増えます。ただ、進化の度合いはかなりゆっくりかなと。何百世代とやるととても優秀になるかもしれませんが、5回失敗すると終わりなのでそこまでもっていくのは大変そうです。&lt;/p&gt;&#xA;&lt;p&gt;いろんな人が育てた結果が共有されたりすると、面白い避け方をするインベーダーがたくさん作られるかもしれないですね。&lt;/p&gt;&#xA;&lt;p&gt;シューティングゲームなんて、結局のところコンピューターはいくらでも反応速度を上げられるため、本気でやられたら人間が勝てるものではないのですけど、こちらの打った手を学習して相手の攻撃が変わる、というギミックで、プレイするユーザー毎に違うゲーム体験を作ったりできるということはあるのかも、と思いました。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;https://news.ycombinator.com/item?id=18339551&#34;&gt;Hacker News&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>MarI/O - ニューラルネットワークと遺伝的アルゴリズムでマリオの早解き</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2015/06/fastrun-super-mairo-by-program/</link>
				<pubDate>Mon, 15 Jun 2015 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2015/06/fastrun-super-mairo-by-program/</guid>
				<description>&lt;p&gt;ニューラルネットワークと遺伝的アルゴリズムの組み合わせにより、ゲーム「スーパーマリオブラザーズ」の一面を教師無し学習で解かせている&lt;a href=&#34;https://www.youtube.com/watch?v=qv6UVOQ0F44&#34;&gt;動画&lt;/a&gt;です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2015/06/fastrun-super-mairo-by-program/mario-neural-network.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2015/06/fastrun-super-mairo-by-program/mario-neural-network_hu_3df873c59dbcfc70.webp 408w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2015/06/fastrun-super-mairo-by-program/mario-neural-network.png&#34; width=&#34;408&#34; height=&#34;352&#34; alt=&#34;mario-neural-network&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;最初に学習が十分済んだ状態のプレイが実演されますが、1面を46秒で解いています。世の中には41秒で解いてる動画もあるようですが、かなり早い部類と言えるでしょう。&lt;/p&gt;&#xA;&lt;p&gt;0:46 からは、今回の解法についての解説です。マリオを含む画面上の地形やキャラクターのスプライトを入力に、どのボタンを押すかを出力としたニューラルネットワークをランダムに作り、うまくいったネットワークを組み合わせて次の世代のネットワークを作り試行させます。これを繰り返し、この例では34世代目でマリオが46秒でゴールに到達する組み合わせが出来ています。&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/qv6UVOQ0F44?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;a href=&#34;http://pastebin.com/ZZmSNaHX&#34;&gt;luaのソースコードがPastebinで公開されている&lt;/a&gt;ので、追試も可能かもしれません。NESエミュレーター(Bizhawk Emulator)とマリオ本体が必要だと思いますが。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://sethbling.com/&#34;&gt;SethBling さん&lt;/a&gt;は、マインクラフトなどゲームを扱った多数のヒット動画を持つ人気ユーチューバーでもあり、今は抜かれました(この記事執筆次点で歴代9位)が&lt;a href=&#34;http://deanyd.net/smw/index.php?title=Leaderboards&#34;&gt;スーパーマリオの早解き&lt;/a&gt;で世界一を取ったこともあります。もしかすると早解きのルートはこのようなプログラムの解析を参考にしたのかもしれません。&lt;/p&gt;&#xA;&lt;p&gt;# あるいはその早解きプレイ動画自体がこうしたプログラムによるものだった可能性もあるのかも&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;http://thenextweb.com/insider/2015/06/14/watch-this-learning-neural-network-annihilate-super-mario-world-with-ease/&#34;&gt;TNW&lt;/a&gt;&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
