Did Christoph take some pictures?  I seem to recall some flash.<br><br><div class="gmail_quote">On Fri, Mar 13, 2009 at 12:55 PM, Praveen Sinha <span dir="ltr"><<a href="mailto:dmhomee@gmail.com">dmhomee@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hey and also very public props to Josh for facilitating such an<br>
amazing learning session.   Too bad we don't have pictures of that<br>
night on our wiki because it was a great great example of technology<br>
enabled learning!  Good job, I'm excited about our ever evolving<br>
energy in our ML group and also at noisebridge!<br>
<div><div></div><div class="h5"><br>
On Fri, Mar 13, 2009 at 12:19 AM, Josh Myer <<a href="mailto:josh@joshisanerd.com">josh@joshisanerd.com</a>> wrote:<br>
> For those of you who weren't there: you missed a great time!  We had<br>
> the whole table downstairs full of folks with laptops, everyone coding<br>
> up their own neuron.  By the end of the night, all but one person had<br>
> succeeded (but, hey, he was trying to learn LISP as part of the<br>
> exercise).  Congratulations to everyone on their good work!<br>
><br>
> You can see the fruits of our labors at<br>
> <a href="https://www.noisebridge.net/wiki/Machine_Learning_Meetup_Notes:_2009-03-11#Machine_Learning_Meetup_Notes:_2009-03-11" target="_blank">https://www.noisebridge.net/wiki/Machine_Learning_Meetup_Notes:_2009-03-11#Machine_Learning_Meetup_Notes:_2009-03-11</a><br>

><br>
> In the end, we have linear perceptrons implemented in the following<br>
> languages:<br>
>  * python (3 times over, even)<br>
>  * ruby<br>
>  * Matlab<br>
>  * C (oh man)<br>
>  * Mathematica with a functional bent (oh man oh man)<br>
><br>
><br>
> Everyone seemed really stoked by the end of the night, so I think<br>
> we'll continue with this format more often.  It was great fun, and it<br>
> provided lots of opportunities to introduce ML ideas and techniques*.<br>
><br>
> As a follow-up to the exercise, there are some questions on the wiki<br>
> for people who made it (they're copied below, as well, if you're<br>
> feeling lazy).  If you want to continue playing with perceptrons, each<br>
> of these paragraphs should take about an hour of playing with your new<br>
> toy to answer really well, and maybe a bit of googling to fully<br>
> understand.  I think I'll go further into the perceptron next week,<br>
> and flesh out these paragraphs as the topics to cover.  What do people<br>
> think?<br>
><br>
> This week was a blast.  Thanks to everyone who came out, and good work<br>
> building your perceptons!<br>
> --<br>
> Josh Myer   650.248.3796<br>
>  <a href="mailto:josh@joshisanerd.com">josh@joshisanerd.com</a><br>
><br>
><br>
> * Admittedly, I didn't capitalize on this.  I spent most of my time<br>
>  running around, trying desperately to remember what language I was<br>
>  helping people with at any given second.  It was awesome fun =)<br>
><br>
><br>
> Now, if you look at your weights and think about what they mean, you'll notice something odd. At the end, the weights aren't equal! We trained a NAND gate, so every input should have an equal opportunity to change the output, right? Given that last leading question, what would you expect the ideal weights to be? Do the learned weights match that expectation? Why? (Hint: What does "overfitting" mean, and how is it relevant?)<br>

><br>
> Can you build a training set for an OR gate, and train it? What other operators can you implement this way? All you need to do is build a new training set and try training, which is pretty awesome if you think about it. (Hint: What does "separability" mean, and how is it relevant?)<br>

><br>
> Let's say we wanted to output smooth values instead of just 0 or 1. What wouuld you need to change in your evaluation step to get rid of the thresholding? What wouuld you need to change about learning to allow your neuron to learn smooth functions? (Hint: in a smooth output function, we want to change the amount of training we do by how far we were off, not just by which direction we were off.)<br>

><br>
> What if we wanted to do something besides multiple each input by its weight? What if we wanted to do something crazy, like take the second input, square it, and multiply _that_ by the weight? That is: what if we wanted to make the output a polynomial equation instead of a linear one, where each input is x^1, x^2, etc, with the weights as their coefficients? What would need to change in your implementation? What if we wanted to do even crazier things, like bizarre trig functions?<br>

><br>
><br>
> On Tue, Mar 10, 2009 at 01:48:49PM -0700, Josh Myer wrote:<br>
>> Hey, an early announcement, crazy!<br>
>><br>
>> Tomorrow night, 8PM, at 83c, we'll have a machine learning workshop.<br>
>> This week's ML Wednesday is going to be another experiment in format.<br>
>> We'll have a real quick introduction to perceptrons (cute little<br>
>> baaaaby neural networks), then we'll all code one up in our language<br>
>> of choice.  By the time you leave, you should have written your own<br>
>> little artificial neuron.<br>
>><br>
>><br>
>> To that end, I need a couple of things from the audience:<br>
>><br>
>> 1. My ML-aware peeps to step up to shepherd a bit on Wednesday night<br>
>>    (You've all been awesome about this thus far, so I'm not worried<br>
>>    about it.  You might want to brush up on the learning  algorithm<br>
>>    used, though.  I'll do a preso, too, so it should be smooth going.)<br>
>><br>
>> 2. Some sample code in your language of choice.  As long as you can<br>
>>    write a the following function, we're probably good.  Here's that<br>
>>    function; please have it working before you come Wednesday.<br>
>><br>
>><br>
>> dot_product:<br>
>><br>
>> takes two arrays of equal length, multiples them along each other, and<br>
>> sums the products.<br>
>><br>
>> Test cases for dot_product:<br>
>><br>
>> dot_product([0],[1]) = 0<br>
>> dot_product([1,2,3,4],[1,10,100,1000]) = 4321<br>
>><br>
>> And, a quick version in accessible ruby:<br>
>><br>
>> def dot_product(a, b)<br>
>>   sum = 0.0<br>
>>   i = 0<br>
>><br>
>>   while(i < a.length)<br>
>>     sum += a[i]*b[i]<br>
>>     i += 1<br>
>>   end<br>
>><br>
>>   return sum<br>
>> end<br>
>><br>
>><br>
>> If this experimental format goes well, we could move on to doing more<br>
>> complex neural networks on top of the same ideas in another workshop,<br>
>> or maybe try some other learning algorithms in the same format.<br>
>><br>
>> I hope you can join us and build your own little learner tomorrow!<br>
>> --<br>
>> Josh Myer   650.248.3796<br>
>>   <a href="mailto:josh@joshisanerd.com">josh@joshisanerd.com</a><br>
>> _______________________________________________<br>
>> Noisebridge-discuss mailing list<br>
>> <a href="mailto:Noisebridge-discuss@lists.noisebridge.net">Noisebridge-discuss@lists.noisebridge.net</a><br>
>> <a href="https://www.noisebridge.net/mailman/listinfo/noisebridge-discuss" target="_blank">https://www.noisebridge.net/mailman/listinfo/noisebridge-discuss</a><br>
>><br>
> _______________________________________________<br>
> Noisebridge-discuss mailing list<br>
> <a href="mailto:Noisebridge-discuss@lists.noisebridge.net">Noisebridge-discuss@lists.noisebridge.net</a><br>
> <a href="https://www.noisebridge.net/mailman/listinfo/noisebridge-discuss" target="_blank">https://www.noisebridge.net/mailman/listinfo/noisebridge-discuss</a><br>
><br>
_______________________________________________<br>
Noisebridge-discuss mailing list<br>
<a href="mailto:Noisebridge-discuss@lists.noisebridge.net">Noisebridge-discuss@lists.noisebridge.net</a><br>
<a href="https://www.noisebridge.net/mailman/listinfo/noisebridge-discuss" target="_blank">https://www.noisebridge.net/mailman/listinfo/noisebridge-discuss</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Zhao<br>