tag:blogger.com,1999:blog-79178638136420839332024-03-14T00:09:24.157-07:00Quebrando a normaChutando o balde na Inteligência Artificial, Tecnologia da Informação, Lógica e MatemáticaLuiz Carlos d'Oleronhttp://www.blogger.com/profile/07523055644962536229noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-7917863813642083933.post-33578384807859474092014-08-13T18:44:00.003-07:002014-08-13T18:44:36.240-07:00TOY implementation of vacuum cleaner cenario<span style="font-family: Arial,Helvetica,sans-serif;">This simple TOY implementation of vacuum cleaner cenario (AIMA section 2.1 ed 4th) using less than 500 Javascript lines.<br />I'm not an skilled javascript programmer (thanks w3scholls!) but the TOY implementation try to show how is possible build simple AI assets using JavaScript WITHOUT advanced tooling as Fuzzy logic, Bayesians nets, A* searches and so on. No pre-knowledge is given so the cleaner need to learn based only in itself perceptions and actions, and just uses a primitive learning mechanism, based rudimentary comparation and recompense, to reach best performance along your life with no generalization. Of course, this primitive process converge slowly =)</span><br />
<br /><a href="http://23.21.215.215/vacuumcleanertoy/" target="_blank">http://23.21.215.215/vacuumcleanertoy/</a><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">I apologize for any browser specific issues. Any troubles, please gimme feedback: doleron at gmail.com</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: Arial,Helvetica,sans-serif;">Enjoy.</span>Luiz Carlos d'Oleronhttp://www.blogger.com/profile/07523055644962536229noreply@blogger.com0tag:blogger.com,1999:blog-7917863813642083933.post-67790890895988714962014-04-03T19:42:00.002-07:002014-04-03T21:03:14.399-07:00Sigmoid Function, Derivative and LimitsWe have two objectives. First, we need derivate the <a href="http://en.wikipedia.org/wiki/Sigmoid_function" target="_blank">sigmoid function</a>:<br />
<br />
<span style="font-size: large;">$S(x) = \frac {1}{1 + e^{-px}}$</span><br />
<br />
using very simple techniques.<br />
<br />
Second, we must to find the more right and more left function limits:<br />
<br />
<span style="font-size: large;">$ \lim_{x \to +\infty }{S(x)} = 1$ e $\lim_{x \to -\infty }{S(x)} = 0$ </span><br />
<br />
<span style="font-size: large;"><b>Derivative sigmoid</b></span><br />
<br />
We are looking for<br />
<br />
<span style="font-size: large;">$\frac{\mathrm{d} S(x)}{\mathrm{d} x} = S'(x)$. </span><br />
<br />
To deriving it, we'll apply the quocient rule, which is remembered here:<br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">$\left ( \frac{f}{g} \right )' = \frac{f'g - g'f}{g^2}$</span><br />
<br />
Said that, taking:<br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">$f(x) = 1 \Rightarrow f'(x) = 0$</span><br />
<span style="font-size: large;"><span style="font-size: small;">and</span> </span><br />
<span style="font-size: large;">$g(x) = 1 + e^{-px} \Rightarrow g'(x) = -pe^{-px}$</span><br />
<br />
Then,<br />
<br />
<span style="font-size: large;">$S'(x) = \left ( \frac{f}{g} \right )' = \frac{0g - g'1}{g^2} = \frac{pe^{-px}}{(1 + e^{-px})^2}$</span> <br />
<br />
Objective reached. But if you try <a href="https://www.wolframalpha.com/input/?i=derivate+1%2F%281+%2B+exp%28-px%29%29" target="_blank">Wolfram Alpha to do it</a>, you'll take a different answer:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-S_XYVKaZtGQ/Uz4bBRzMo_I/AAAAAAAAAY0/_C04xMGSitY/s1600/derivate_sigmoid.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-S_XYVKaZtGQ/Uz4bBRzMo_I/AAAAAAAAAY0/_C04xMGSitY/s1600/derivate_sigmoid.PNG" height="111" width="320" /></a></div>
<br />
Ok, no problem. Let's show that both answers are equivalent.<br />
<br />
<span style="font-size: large;">$ = \frac{pe^{-px}}{(1 + e^{-px})^2}$<br /><br />$ = \frac{(e^{2px})pe^{-px}}{(e^{2px})(1 + 2e^{-px} + e^{-2px})}$ <br /><br />$ = \frac{pe^{px}}{e^{2px} + 2e^{px} + 1}$</span><br />
<br />
And finally<br />
<br />
<span style="font-size: large;">$ = \frac{pe^{px}}{(e^{px} + 1)^2}$ </span><br />
<br />
<span style="font-size: large;"><b>Limits in $+\infty$ and $-\infty$ </b></span><br />
<br />
The two limits are easy to do:<br />
<br />
<span style="font-size: large;">$lim_{x \to +\infty }{\frac {1}{1 + e^{-px}}} = \frac {1}{1 + \frac{1}{\infty}} = \frac {1}{1 + 0} = 1$ </span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">$lim_{x \to -\infty }{\frac {1}{1 + e^{-px}}} = \frac {1}{1 + e^{p\infty}} = \frac {1}{1 + \infty} = 0$ </span><br />
<br />Luiz Carlos d'Oleronhttp://www.blogger.com/profile/07523055644962536229noreply@blogger.com0tag:blogger.com,1999:blog-7917863813642083933.post-57449031749007195902014-04-03T14:47:00.001-07:002014-04-03T21:19:03.594-07:00Usando R e Wolfram Alpha<div dir="ltr">
É muito fácil usar tecnologia hoje em dia. Ao menor toque, um dispositivo reconhece exatamente o que você deseja fazer. A loja virtual "adivinha" com grande precisão aquele produto que você desejava tanto comprar, mostrando ele em destaque, logo na primeira página. <br />
Só que, do outro lado, está o pessoal que desenvolve essas coisas. E, de forma inversa, eles precisam redobrar os esforços para construir essas interfaces inteligentes. Novas tecnologias trazem novos desafios de implementação, exigindo muita criatividade e conhecimento. Na maioria das vezes, essas soluções vêm na forma de modelos matemáticos que, seja em software, seja em hardware, precisam ser implementados.<br />
<br />
Esse artigo mostra como usar o R Project for Statistical Computing e o Wolfram Alpha para resolver, com enorme facilidade, problemas comuns no dia a dia de quem trabalha no desenvolvimento de novas tecnologias e projetos de forte caráter inovador.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b><span style="font-size: large;">O que você vai precisar</span></b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Vamos precisar do R e do Wolfram Alpha. O Wolfram é uma ferramenta web. Então tudo que você vai precisa é acessar o endereço <a href="http://wolframalpha.com/">http://wolframalpha.com</a> e voilà.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-oSyvRmOuZvs/Uz3bcifEnlI/AAAAAAAAAYk/tn3u4Ir03oY/s1600/wolfram_alpha.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-oSyvRmOuZvs/Uz3bcifEnlI/AAAAAAAAAYk/tn3u4Ir03oY/s1600/wolfram_alpha.PNG" height="107" width="320" /></a></div>
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Para usar o R, você vai precisar instalá-lo na sua máquina. Baixe o instalador do <a href="http://www.r-project.org/" target="_blank">site da ferramenta</a> e depois é next next next. Para executá-lo, basta dar um duplo clique no ícone da área de trabalho. </div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-WxObXHs7UB8/Uz2ey2oTCVI/AAAAAAAAAXc/lQ8mTEukmbM/s1600/artigo_r_exemplo0.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-WxObXHs7UB8/Uz2ey2oTCVI/AAAAAAAAAXc/lQ8mTEukmbM/s1600/artigo_r_exemplo0.PNG" height="171" width="320" /></a></div>
<div dir="ltr">
</div>
<div dir="ltr">
Ambas as ferramentas são gratuitas. Não é necessário criar conta nem cadastrar email. Ready-to-use!</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="font-size: large;"><b>O que vamos fazer</b></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Para efeito de exemplo, vamos trabalhar com a função sigmóide:</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Logistic-curve.svg/600px-Logistic-curve.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Logistic-curve.svg/600px-Logistic-curve.svg.png" height="213" width="320" /></a></div>
<div dir="ltr" style="text-align: right;">
<span style="font-size: x-small;">Imagem obtida de <a href="http://en.wikipedia.org/wiki/Sigmoid_function">http://en.wikipedia.org/wiki/Sigmoid_function</a></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Escolhi essa função porque ela é realmente importante. Ela é utilizada em todo lugar. O pessoal de aprendizagem de máquina adora usar ela como função de ativação em redes neurais artificiais:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/commons/thumb/6/60/ArtificialNeuronModel_english.png/600px-ArtificialNeuronModel_english.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/60/ArtificialNeuronModel_english.png/600px-ArtificialNeuronModel_english.png" height="152" width="320" /></a></div>
<br />
<div dir="ltr" style="text-align: right;">
<span style="font-size: x-small;">Imagem obtida de <a href="http://en.wikibooks.org/wiki/Artificial_Neural_Networks/Activation_Functions">http://en.wikibooks.org/wiki/Artificial_Neural_Networks/Activation_Functions</a></span></div>
<div dir="ltr">
</div>
<br />
<div dir="ltr">
Estatísticas sócio-econômicas, controles de sinais elétricos, planejamento de tráfego, processamento de imagens e um monte de outras coisas são feitas com a função sigmóide. Ela é realmente a função da moda </div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-WxlQUQqHBWs/Uz2fbl4tLAI/AAAAAAAAAXk/V8boUW68nJM/s1600/sigmoid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-WxlQUQqHBWs/Uz2fbl4tLAI/AAAAAAAAAXk/V8boUW68nJM/s1600/sigmoid.png" height="200" width="320" /></a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
</div>
<div dir="ltr">
A forma analítica mais simples da sigmóide é essa:<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">$S(x) = \frac{1}{1 + exp(-x)}$ </span></div>
</div>
<br />
<div dir="ltr">
As razões para se usar tanto a sigmoide são:</div>
<div dir="ltr">
1) Ela é simples. Fácil de implementar e seu custo computacional é baixo; <br />
2) Ela é contínua para qualquer valor de <i>x</i>. Dessa forma, ela sempre vai dar uma resposta para qualquer entrada;<br />
3) Ela é derivável para qualquer valor de <i>x</i>, o que torna sua forma suavizada;<br />
4) Ela é limitada entre 0 e 1, não importa qual o valor de <i>x</i>, o que permite obter uma saída controlada, mesmo com uma entrada incomum.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Vamos usar uma forma parametrizada da sigmóide, que possui um único parâmetro <i>p</i>:<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">$S(x) = \frac{1}{1 + e^{-px}}$ </span></div>
</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
</div>
<div dir="ltr">
O parâmetro<i> <span style="font-size: large;"><span style="color: red;">p</span></span></i> vai ser útil logo mais. </div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="font-size: large;"><b>Faça a análise visual! </b></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
A primeira coisa que fazemos quando analisamos algo é visualização. Com um modelo matemático não poderia ser diferente. Vamos usar o R para isso. </div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Na tela do R digite:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="font-family: "Courier New",Courier,monospace;"><span style="color: red;">p <- 1</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
E aperte a tecla ENTER. Não se preocupe, nada vai acontecer. A única coisa que você fez foi informar ao R que existe um parâmetro p e o valor dele é 1.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Em seguida, digite:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="font-family: "Courier New",Courier,monospace;"><span style="color: red;">x <- seq(-10, 10, 0.1)</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
E tecle o ENTER. Estamos declarando uma variável x e dizendo ao R para inicializá-la com uma sequência de números, começando com -10 até o 10, com passos de 0.1. Agora, vamos fazer algo mais complicado. Digite:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="color: red;"><span style="font-family: "Courier New",Courier,monospace;">s <- 1/( 1 + exp(-p * x))</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Como habitual, tecle o ENTER para que o R reconheça o que você digitou. Estamos declarando uma variável s. Como x é uma sequência, s também é uma sequência. Cada valor da sequência s é calculado com a fórmula que você digitou. Desse modo, teremos 1 valor em s para cada valor em x.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Agora estamos prontos para gerar o nosso primeiro gráfico com o R. Digite:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="color: red;"><span style="font-family: "Courier New",Courier,monospace;">plot(x, s)</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
A tela do R deverá estar assim:</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-qROKRyBroFE/Uz2d80vkWZI/AAAAAAAAAXI/SldyMsYoshg/s1600/artigo_r_exemplo1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-qROKRyBroFE/Uz2d80vkWZI/AAAAAAAAAXI/SldyMsYoshg/s1600/artigo_r_exemplo1.PNG" height="171" width="320" /></a></div>
<br />
<div dir="ltr">
O mesmo gráfico pode ser desenhado com o Wolfram. Para demonstrar isso, vamos abrir o navegador no endereço da ferramenta <a href="http://www.wolframalpha.com/" target="_blank">clicando aqui</a>.<br />
<br />
No alto da página tem uma caixa de texto. Dentro dela digite:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="color: red;"><span style="font-family: Arial,Helvetica,sans-serif;">plot 1/(1+exp(-x)) from x=-10 to 10</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
E aperte ENTER. O Wolfram vai atualizar a tela e mostrar isso:</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-HS6eR0JNhxs/Uz2gJOtQ2pI/AAAAAAAAAXs/PlcQUpKtrXc/s1600/artigo_r_exemplo.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-HS6eR0JNhxs/Uz2gJOtQ2pI/AAAAAAAAAXs/PlcQUpKtrXc/s1600/artigo_r_exemplo.PNG" height="275" width="320" /></a></div>
<br />
<div dir="ltr">
Esse foi um gráfico muito simples de ser criado. Mesmo assim, já podemos identificar algumas coisas. Uma delas é que a função é limitada entre 0 e 1. Se <i>x</i> for muito grande, a função se aproxima do valor 1. Se <i>x</i> for muito negativo, a função se aproxima do valor 0. Isso se mantém indefinidamente. Por exemplo, se você alterar o range do gráfico:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="color: red;"><span style="font-family: Arial,Helvetica,sans-serif;">plot 1/(1+exp(-x)) from x= -100 to 100</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Vamos ter ainda o mesmo comportamento: </div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-EVFnuXwsfDA/Uz2geRQcuPI/AAAAAAAAAX0/qlyIdmycpOY/s1600/artigo_r_exemplo5.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-EVFnuXwsfDA/Uz2geRQcuPI/AAAAAAAAAX0/qlyIdmycpOY/s1600/artigo_r_exemplo5.PNG" height="252" width="320" /></a></div>
<br />
<div dir="ltr">
Essa é uma propriedade muito interessante. Por exemplo, se você está desenvolvendo algo que transforma uma sinal elétrico variável em uma saída limitada, usando a sigmóide sua saída estará sempre controlada entre 0 e 1, mesmo durante um surto de tensão.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Um outro ponto interessante do gráfico é a evidente suavidade da função. Se você está planejando a trajetória de um vôo, provavelmente vai desejar usar a função sigmóide à esquerda do que usar uma trajetória como a da direita:</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ZY_slZJpmyk/Uz2g7X9fCnI/AAAAAAAAAX8/ficSDUCojU0/s1600/sigmoid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-ZY_slZJpmyk/Uz2g7X9fCnI/AAAAAAAAAX8/ficSDUCojU0/s1600/sigmoid.png" height="97" width="320" /></a></div>
<div dir="ltr">
A grande diferença entre as duas trajetórias está nos pontos destacados com círculos verde. Naqueles pontos, a direção do avião precisa mudar abruptamente, o que é, no mínimo, desagradável.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="font-size: large;"><b>Perturbando a função sigmóide</b></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Usar o Wolfram é muito fácil. Mas algumas coisas são mais fáceis de fazer no R. Vamos agora ver o que acontece quando alteramos o valor de p.<br />
<br />
No R, digite:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="color: red;"><span style="font-family: "Courier New",Courier,monospace;">p <- 2<br />x <- seq(-10, 10, 0.1)<br />s <- 1/( 1 + exp(-p * x))<br />plot(x, s, type="l", col="green")<br />p <- 1<br />x <- seq(-10, 10, 0.1)<br />s <- 1/( 1 + exp(-p * x))<br />par(new=TRUE)<br />plot(x, s, type="l", axes=FALSE, col="blue")<br />p <- 0.5<br />x <- seq(-10, 10, 0.1)<br />s <- 1/( 1 + exp(-p * x))<br />par(new=TRUE)<br />plot(x, s, type="l", axes=FALSE, col="red")</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
E o resultado será:</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-S8S3tdmQfvA/Uz2eF4JMZUI/AAAAAAAAAXU/0hKETaBJUcg/s1600/artigo_r_exemplo3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-S8S3tdmQfvA/Uz2eF4JMZUI/AAAAAAAAAXU/0hKETaBJUcg/s1600/artigo_r_exemplo3.PNG" height="320" width="310" /></a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Como podemos ver, <i>p</i> pode ser alterado para ajustar a inclinação da sigmóide. Isso é muito útil, pois conseguimos ter um maior controle da forma da função.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Por exemplo, vamos supor que precisamos planejar a trajetória sigmóide de um vôo de avião. Vamos supor ainda que a inclinação máxima permitida seja de 30º. A questão que surge é: quais valores de <i>p</i> atendem a esse requisito?</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Lá do cálculo diferencial, sabemos que a inclinação de qualquer curva é dada pela sua função derivada. Logo, precisamos saber qual é o valor máximo da derivada de <i>S(x)</i>.<br />
<br />
Calcular a derivada de<i> S(x)</i> "na mão" não é tarefa difícil. Nesse <a href="http://quebrandoanorma.blogspot.com.br/2014/04/derivating-sigmoid-function.html" target="_blank">outro artigo, é mostrado como fazer isso</a> com um papel e lápis.<br />
O problema de fazer isso "na mão" é que tarefas desse tipo são cansativas, enfadonhas,
propícias a erros e definitivamente não é produtivo. Não dá para fazer isso todo dia. Por outro lado, fazer isso no Wolfram é moleza, como podemos ver a seguir.<br />
<br />
Acesse a página da ferramenta e entre com a seguinte consulta:</div>
<div dir="ltr">
<span style="color: red;"><br /></span></div>
<div dir="ltr">
<span style="color: red;"><span style="font-family: Arial,Helvetica,sans-serif;">derivate 1/(1+exp(-p * x))</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
E rapidamente o Wolfram calculou a derivada de primeira ordem da sigmóide:</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-n8vedRUQD0Q/Uz2hXC6aY5I/AAAAAAAAAYE/F4nPKjaYos8/s1600/artigo_r_exemplo6.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-n8vedRUQD0Q/Uz2hXC6aY5I/AAAAAAAAAYE/F4nPKjaYos8/s1600/artigo_r_exemplo6.PNG" height="120" width="320" /></a></div>
<div dir="ltr">
<br />
Não precisou de regra da cadeia nem de artifício algum. Em poucos segundos está lá a derivada prontinha.<br />
<br /></div>
<div dir="ltr">
Como a imagem mostra, o Wolfram calculou a derivada de <i>S(x)</i> como sendo:<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">$S'(x) = \frac{p e^{px}}{(1 + e^{px})^2}$ </span></div>
<br />
Da mesma forma que a sigmóide, podemos perceber que sua derivada <i>S'(x)</i> é sempre contínua. Se <i>p</i> = 1 então<i> S'(x)</i> tem a famosa forma de sino:</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-2fF-mydz1KM/Uz2h2kIM8vI/AAAAAAAAAYM/NyPLuFns93M/s1600/derivada_sino.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-2fF-mydz1KM/Uz2h2kIM8vI/AAAAAAAAAYM/NyPLuFns93M/s1600/derivada_sino.PNG" height="205" width="320" /></a></div>
<br />
<div dir="ltr">
O gráfico mostra que o valor de <i>S'(x)</i> é máximo quando <i>x</i> = 0.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Podemos apenas supor que a forma da função se mantém igual para qualquer valor de <i>p</i>. Se essa suposição estiver correta, podemos pedir para o Wolfram fazer a seguinte conta para a gente:</div>
<div dir="ltr">
<span style="color: red;"><br /></span></div>
<div dir="ltr">
<span style="color: red;"><span style="font-family: Arial,Helvetica,sans-serif;">derivate 1/(1+exp(-p * x)) , x = 0</span></span></div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-HU1HaFkacuI/Uz2iF4MWFcI/AAAAAAAAAYU/NU7Jcwfw-0E/s1600/p_div_4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-HU1HaFkacuI/Uz2iF4MWFcI/AAAAAAAAAYU/NU7Jcwfw-0E/s1600/p_div_4.PNG" height="158" width="320" /></a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
O resultado mostra que a inclinação máxima é <i>p</i>/4. Como a inclinação máxima permitida é de 30º, temos <i>p</i>/4 = tg 30º. Logo, ao fixar o valor de <i>p</i>, temos que manter ele no máximo até <i>p</i> = 4 * tg 30º = 2.3.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="font-size: large;"><b>Prove me com números!</b></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
A análise visual nos dá boas dicas sobre o comportamento da função. Mas não prova nada. Se quisermos ter absoluta certeza que a função se aproxima de 0 para <i>x</i> muito negativo e se aproxima de 1 para <i>x</i> muito grande, temos que provar isso. Em bom matematiquês, podemos dizer:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<i>"O limite de S(x) quando x tende ao infinito negativo é ZERO e o limite de S(x) quando x tende ao infinito positivo é UM."</i></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Ou, em notação matemática:<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">$ \lim_{x \to +\infty }{S(x)} = 1$ e $\lim_{x \to -\infty }{S(x)} = 0$ </span></div>
</div>
<br />
<div dir="ltr">
Calcular o valor desses limites com o Wolfram é muito fácil. Abra o Wolfram novamente no seu navegador e entre com:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="color: red;"><span style="font-family: Arial,Helvetica,sans-serif;">lim 1/(1+exp(-x)) as x->infinity</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
O Wolfram calculou o valor do limite quando $x -> +\infty $ como 1, que era exatamente o que tínhamos esperado. Se repetirmos para infinito negativo:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="color: red;"><span style="font-family: Arial,Helvetica,sans-serif;">lim 1/(1+exp(-x)) as x->-infinity</span></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Como identificamos na análise gráfica, o valor do limite quando $x -> -\infty $ foi 0. O Wolfram realmente é demais!</div>
<br />
<div dir="ltr">
<span style="font-size: large;"><b>Conclusão</b></span></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
15 anos atrás, quando iniciava meus estudos no cálculo, nunca imaginaria que as coisas iriam ficar tão fáceis como hoje. A capacidade de visualizar a informação facilmente e a interface simbólica e intuitiva do R e do Wolfram aceleram a produtividade e confiabilidade quando o assunto é matemática aplicada ao desenvolvimento de tecnologia atual. Como toda ferramenta, claro, o poder está na mão de quem a usa adequadamente.</div>
Luiz Carlos d'Oleronhttp://www.blogger.com/profile/07523055644962536229noreply@blogger.com0tag:blogger.com,1999:blog-7917863813642083933.post-85987960645554813072011-01-01T09:28:00.000-08:002011-01-01T12:16:39.816-08:00Feliz 0 + 1 – (2 x 3) + [4 x 567 x 8] / 92011 é a soma de 11 primos consecutivos:<br />
<br />
<b>2011 = 157 + 163 + 167 + 173 + 179 + 181 + 191 + 193 + 197 + 199 + 211</b><br />
<br />
Opaa!<br />
<br />
Para completar, 2011 é o resultado de uma combinação excêntrica dos algarismos da base 10:<br />
<br />
<b>2011 = 0 + 1 – (2 x 3) + [4 x 567 x 8] / 9</b><br />
<br />
Será que isso quer dizer algo especial sobre o ano que está chegando? Ou será esse um importante padrão para analisarmos os números naturais?<br />
<br />
Isso é um exemplo do que o Leonard Mlodinow cita no seu livro "O andar do bêbado": "Buscar padrões e atribuir-lhes significados faz parte da natureza humana." <a href="http://www.zahar.com.br/catalogo_detalhe.asp?id=1008">#REF</a><br />
<br />
Galera,<br />
<br />
<b><span style="font-size: large;">Que todos tenham um Ano Novo cheio de realizações e, principalmente, de Novos Sonhos.</span></b><br />
<br />
Mais fatos interessantes sobre o número 2011 em <a href="http://benvitale-funwithnum3ers.blogspot.com/2010/11/fun-facts-about-2010-and-2011.html">#REF</a>.Luiz Carlos d'Oleronhttp://www.blogger.com/profile/07523055644962536229noreply@blogger.com0tag:blogger.com,1999:blog-7917863813642083933.post-27900896102582845042010-12-30T19:53:00.000-08:002011-01-04T12:29:02.190-08:00Começou, galera!<div style="font-family: Verdana,sans-serif;">Nunca fui muito interessado em criar um blog não...</div><div style="font-family: Verdana,sans-serif;">Mas, o dever me chama!</div><div style="font-family: Verdana,sans-serif;">Minha ideia principal é divulgar o que é conhecido como Inteligência Artificial, a I.A.</div><div style="font-family: Verdana,sans-serif;"><br />
</div><div style="font-family: Verdana,sans-serif;">E por que divulgar uma coisa que já é tão divulgada?</div><div style="font-family: Verdana,sans-serif;"><br />
</div><div style="font-family: Verdana,sans-serif;">Temos bons livros, sites, blogs, artigos sobre a IA... <br />
<br />
Bem, decidi criar esse blog por que eu acho que não é fácil entrar (e sobreviver) nesse mundo de conceitos e tecnologias sobre IA. Temos muito ainda a caminhar no ensino de Inteligência Artificial.<br />
<br />
Vamos chutar o balde sobre muitos conceitos, quebrar a norma, sair do lugar comum.<br />
<br />
Tentaremos levar tudo com uma linguagem acessível, deixando as #REF (referências) para que o leitor possa alongar sua pesquisa e chutar seus próprios baldes por ai ou por aqui.</div><div style="font-family: Verdana,sans-serif;"><br />
</div><div style="font-family: Verdana,sans-serif;"></div><div style="font-family: Verdana,sans-serif;"></div><div style="font-family: Verdana,sans-serif;"></div><div style="font-family: Verdana,sans-serif;"></div><div style="font-family: Verdana,sans-serif;"></div><div style="font-family: Verdana,sans-serif;">Sim, é uma tarefa difícil, assim, será preciso a ajuda de muitos.<br />
<br />
<span style="font-family: Verdana,sans-serif;">Assim, sejam bem-vindos! Participem e colaborem!</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://images.uncyc.org/pt/9/9e/Chutando_o_Balde.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://images.uncyc.org/pt/9/9e/Chutando_o_Balde.jpg" /></a></div></div>Luiz Carlos d'Oleronhttp://www.blogger.com/profile/07523055644962536229noreply@blogger.com0