A Direct Way of Understanding Backpropagation and Gradient Descent

Summary: I believe that there are better representations of neural networks that aid in faster understanding of backpropagation and gradient descent. I find representing neural networks as equation graphs combined with the value at run-time helps engineers who don't have the necessary background in machine learning gets them up to speed faster. In this post, I generate a few graphs with Gorgonia to illustrate the examples.

Backpropagation has been explained to death. It really is as simple as applying the chain rule to compute gradients. However, in my recent adventures, I have found that this explanation isn’t intuitive to people who want to just get shit done. As part of my consultancy (hire me!) job* really, I need to pay the bills to get my startup funded , I provide a brief 1-3 day machine learning course to engineers who will maintain the algorithms that I designed. Whilst most of the work I do don’t use neural networks* people who think deep learning can solve every problem are either people with deep pockets aiming to solve a very general problem, or people who don't understand the hype. I have found that most businesses do not have problems that involves a lot of non-linearities. In fact a large majority of problems can be solved with linear regressions. , recently there was a case where deep neural networks were involved.

This blog post documents what I found was useful to explain neural networks, backpropagation and gradient descent. It’s not meant to be super heavy with theory - think of it as an enabler for an engineer to hit the ground running when dealing with deep networks. I may elide over some details, so some basic understanding/familiarity of neural networks is recommended.

[Read More]

Naming Things Poorly

computer scientists have a very unfortunate way of naming things. Take S-expressions for example. They’re pretty a fundamental notation method for functional programming. I was re-implementing a variant of it recently, and obviously I named the package sexp Part of the implementation I wrote was that I had a “shortcut” way of representing the S-expressions internally – as slice (called List) and atoms, instead of actually making a linked-list (because child node access was faster, given that most of the trees are static). [Read More]

The Skynet Argument Against Social Media

In The Terminator (1984), Skynet sends a T-800 to terminate Sarah Connor. And the Terminator had to look up a phone book to find three Sarah Connors, because it mainly didn’t know what Sarah Connor looked like or where she lived. That made sense in 1984. If the records had been destroyed in the war – records can be destroyed because physical drives were expensive and don’t have much capacity. Skynet wouldn’t have known how Sarah Connor looked like, or any other of her personal details. [Read More]

Configuration Management Tools As Operating Systems

Last year I wrote a blog post comparing programming languages to driving experiences. Today in the chatroom, my friends and I were talking about config management tools. I’ve had the opportunity to use most of them, so I compared them to operating systems as such: CM Tool OS Feels Like Ansible Mac OS Here's the one way to do things, chosen Your Lord and God, Steve Jobs. You can do things other ways too, but be prepared for a little pain Salt Linux Do whatever the fuck you want to do. [Read More]

Thor: The Dark World

I never thought I’d blog about another comic book movie since my post on Man of Steel. But I actually found another movie that far surpasses Man of Steel in terms of enjoyability. Perhaps not as deep in subject matter as Man of Steel but far more enjoyable. I’m talking of course, of Thor: The Dark World. There are many things to talk about Thor: The Dark World, but mainly it’s the feeling I get from watching it. [Read More]

etaoin shrdlu cmfwyp vbgkjq xz

ᕜɷ ՓლᏜⵙᎺኡႣǬ ※Ꭴኡⴿ ՓኡփᏜ ᙢႣփᏜ ⵓⴾⵙᕶ Ꭴᕶⴾლ ᙢⴾᎺዯ ლᕶⴾӼᕶლփ ኡᗎ ᙢᏑǬᕶ (ⵓᕶӼᎤᏑ ᏜᏑ ᏜⵓᏜ ※ᏑᏜⵓ ኡᙢ ዯኡႣ) ᏑǬᏜᏑ ᏜⵓᏑᎺᖝᏑᎺⴿ Ꮡ ⵓⴾლ ⴿኡǬᕶ ᙢⴾӼ. Ꮡ ⵓⴾӼǬ’Ꮬ. ᎺᏜ ᙢႣփᏜ ⵓⴾⵙᏜ ※ᕶᕶᎺ ᙢⴾლӼᕶǬᏑᎺⴿ, ɷⵓኡᏜ ɷᎺᏜⵓ փᕶӼᗎ-ᎤᏑᎺᖝᏑᎺⴿ ՓኡփᏜփ ⴾᎺლ ᕜኡᕜՓᎤᕶⴾᕶ ⴾᎺლ ႣᏜⴾᕶⵓ ⴿᏑⵙ※ᕶლᏑǬⵓ. ᏜⵓᏑփ Ꮡփ Ꮬⵓᕶ փᏜኡⵓዯ ኡᗎ ⵓኡɷ Ꮡ ӼლᕶⴾᙢᏜ ᎤՓ ⴾǬ ᕶᎺᕜኡӼᏑᎺⴿ ᗎኡლ Ꮬⵓᕶ ᕶᎺⴿᎤᏑǬփ ᎤⴾᎺⴿႣⴾⴿᕶ. Ꮡ ⵓⴾლ ※ᕶᕶᎺ ӼዯᏑᎺⴿ ᏑᎺ ※ᕶლ, Ꭴኡⴾᕶ ᎤⴾփᏜ ǬᏑⴿⵓᏜ, ᏜⵓᏑᎺᖝᏑᎺⴿ ⴾ※ኡႣᏜ ᕜዯ ኡɷᎺ ՓᕶⵓᕜᏜՓᏜᎺኡǬ ኡᗎ ᏜᏑᙢᕶ ⴾᎺӼ ǬՓⴾᕜᕶ. [Read More]

Harper's Index

Short one today. In a previous post, I mentioned a simpler metric can be used to gauge civil liberties. A few days ago I found the Harper’s Index for April 2013. Here’s what I like about some of the things tracked: Percentage of the U.S. population that is foreign-born : 13 Percentage that was foreign-born in 1913 : 15 Change in the number of undocumented immigrants living in the United States since 2007 : –900,000 [Read More]

Programming Languages as Driving Experiences

So we were just having a chat about programming languages. I was telling my friends, coming from C/C++/Python, how wrong javascript felt, despite having worked on node.js before. PHP felt the same.. something is just… off about those languages. So we decided to compare programming languages to driving cars. Here’s how we compared them (these are the languages we know and have written in them): Programming Language Feels like... C driving a old powerful manual sports car C++ driving a newer model of a powerful sports car. [Read More]

A Fictional Account of a Group of Men Changing the World

Sometimes I wonder, what it is like standing in the precipice of changing the world. Do those people know they’re changing the world? Did the Dutch parliament in 1602 know the significance upon the world when they decided to charter the Dutch East India Company (hereupon I shall use VOC – Vereenigde Oost-Indische Compagnie – in its stead)? Was it merely driven by pure capitalism and a drive to compete against the English East India Company? [Read More]