<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Exponential Fault &#187; experimental</title>
	<atom:link href="http://weblog.lo2k.net/tag/experimental/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.lo2k.net</link>
	<description></description>
	<lastBuildDate>Fri, 25 Feb 2011 16:26:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Ameliorer un réseau de neurones avec un algorithme génétique ?</title>
		<link>http://weblog.lo2k.net/2008/12/ameliorer-un-reseau-de-neurones-avec-un-algorithme-genetique/</link>
		<comments>http://weblog.lo2k.net/2008/12/ameliorer-un-reseau-de-neurones-avec-un-algorithme-genetique/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 12:29:35 +0000</pubDate>
		<dc:creator>X-Blaster</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[experimental]]></category>

		<guid isPermaLink="false">http://weblog.lo2k.net/?p=84</guid>
		<description><![CDATA[En ce moment, je me pose plein de questions sur les réseaux de neurones. Ce n&#8217;est pas mon domaine de predilection mais&#8230; je pense que c&#8217;est un grand rêve . Il y a quelques années j&#8217;ai eu l&#8217;idée de faire ça. Et comme vous pouvez le constater&#8230; on l&#8217;a déjà fait pour moi . Mais [...]]]></description>
			<content:encoded><![CDATA[<p>En ce moment, je me pose plein de questions sur les réseaux de neurones. Ce n&#8217;est pas mon domaine de predilection mais&#8230; je pense que c&#8217;est un grand rêve <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Il y a quelques années j&#8217;ai eu l&#8217;idée de faire <a href="http://www.psi.toronto.edu/~vincent/videoepitome.html">ça</a>. Et comme vous pouvez le constater&#8230; on l&#8217;a déjà fait pour moi <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Mais voilà, j&#8217;ai quand même envie de le refaire pour comprendre comment ça marche.</p>
<h2>Mon objectif</h2>
<p><img class="alignleft size-full wp-image-85" title="sample" src="http://weblog.lo2k.net/wp-content/uploads/2008/12/sample.jpg" alt="sample" width="160" height="80" />Ce que je souhaite faire est assez simple. Voir si je peux affiner une image avec des contours simples en noir et blanc a partir d&#8217;une image low res.</p>
<p>Il faudrait donc que l&#8217;algorithme &#8220;invente&#8221; des details qui n&#8217;existent pas.</p>
<p><span id="more-84"></span></p>
<h2>Un réseau de neurones en bref</h2>
<p>Un réseau neuronale au final c&#8217;est quelque chose d&#8217;assez simple.</p>
<ul>
<li>Des valeurs en entrée</li>
<li>Des valeurs en sortie</li>
<li>Un gros schmilblick entre</li>
</ul>
<p>Pour comprendre un peu le systeme, essayons de le <strong>restreindre à 3D </strong>avec deux points en entrée et un point en sortie.</p>
<ul>
<li>Si la vitesse est a 45 et la limitation a 50, j&#8217;accelere un peu (pedale accel= 0.1)</li>
<li>Si la vitesse est a 60 et la limitation a 50, je freine un peu. (pedale accel = -0.2)</li>
<li>Si la vitesse est a 90 et la limitation a 90, je freine brutalement (pedale accell = -3).</li>
</ul>
<p>Les valeurs ici sont arbitraires et juste donné a titre d&#8217;exemple. Ce qu&#8217;ils faut comprendre c&#8217;est que lors de l&#8217;entrainement, le réseau va s&#8217;autoadapter avec un algorithme d&#8217;ajustement (que je n&#8217;expliquerais pas ici) pour coller un maximum aux valeurs de sorties en fonction des valeurs d&#8217;entrées.</p>
<div id="attachment_86" class="wp-caption alignleft" style="width: 306px"><img class="size-full wp-image-86" title="rm23b04b" src="http://weblog.lo2k.net/wp-content/uploads/2008/12/rm23b04b.gif" alt="Approximation d'un signal carré avec une multitude de sinusoide" width="296" height="217" /><p class="wp-caption-text">Approximation d&#39;un signal carré avec une multitude de sinusoide</p></div>
<p>Si l&#8217;on compare cela a des frequences, en additionant une multitude de frequences, on peut obtenir une courbe en sortie qui est proche de ce que l&#8217;on désire. Ici ce n&#8217;est pas une seule courbe qui passe par tout les points de l&#8217;entrainement mais une addition de courbes.</p>
<p>Il est maintenant facile de comprendre qu&#8217;avec une infinité de neurones, on peut avoir une courbe qui passe par tout les points. Ce n&#8217;est pourtant pas ce que l&#8217;on désire. Si l&#8217;on passe par tout les points, nous pouvons avoir des extremes que l&#8217;on ne souhaite pas prendre en compte (cas bien particulier).</p>
<p>L&#8217;autre soucis d&#8217;un réseau de neurones est la vitesse d&#8217;apprentissage. Un peu comme un humain il faut commencer par des problèmes simples et venir sur des problèmes plus complexe peu a peu. Si le niveau est trop haut, le réseau va apprendre trop vite et se specialiser dans un domaine. Trop lent et il n&#8217;apprendra clairement pas assez vite et restera &#8220;débile&#8221; <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<h2>Ce n&#8217;est pas magique !</h2>
<p>Au final un réseau de neurones doit être bien pensé. Il faut lui attribué un bon nombre de neurones, un bon seuil d&#8217;apprentissage et même une topologie qui correspond au problème (je n&#8217;aborde pas ici les problemes de loop back, de plusieurs couches hidden ni même le type de fonction des neurones sygmoid, linear, &#8230;) et au final je ne suis pas expert.</p>
<h2>Application d&#8217;un algo génétique par dessus</h2>
<p>Et si au final je ne m&#8217;en souciais pas ? <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Pourquoi ne pas mettre en place un algorithme génétique qui etudierait les réseaux de neurones ?</p>
<p>Je pourrais très bien avoir une population de réseau de neurones généré aléatoirement. Comme parametre génétique je pourrais avoir:</p>
<ul>
<li>Le nombre de couches</li>
<li>le nombre de neurones par couche</li>
<li>le type de couche</li>
<li>la valeur de l&#8217;apprentissage</li>
<li>les liaisons entre les couches</li>
</ul>
<p>Ensuite, lors de l&#8217;experimentation sur par exemple 10 000 images générés aléatoirement (même jeux de test pour tout les algos)  je prend les 4 meilleurs algo (basé sur celui qui est plus proche de mes images de reférences), je crée des enfants en gerant des mutations et je continue le processus.</p>
<p>J&#8217;estime qu&#8217;au bout d&#8217;un certain nombre de génération, j&#8217;obtiendrais des réseaux de neurones qui auront un contenu que je ne connais pas mais surtout avec une structure de neurones que je ne connais pas non plus mais qui en théorie devrait fonctionner.</p>
<p>Voila&#8230; c&#8217;est une idée comme ça, j&#8217;attend vos commentaires <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> &#8230; si vous en avez <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p>Si j&#8217;ai le temps d&#8217;implementer cela, je vous en reparle <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Au passage si vous avez de la doc ou que vous êtes au courant que c&#8217;est une perte de temps et que quelqu&#8217;un a déjà tenté avant moi, faite le moi savoir <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.lo2k.net/2008/12/ameliorer-un-reseau-de-neurones-avec-un-algorithme-genetique/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

