Stressful week

It was a long and stressful work week.  I could not focus on NuPIC which was annoying. But, the contractors on Upwork told me that my mac system python has been removed and that is why NuPIC is not working properly.  So I basically need to backup and restore my laptop. Not looking forward to doing this but I wont get a chance to work on this till the weekend.

Still Struggling with the NuPIC error

Written by Chirag on August 9, 2015 Sunday (10:07pm)

I am still struggling to install NuPIC on my laptop.  I had gotten it to work 3 times before and now something just seems off.  I have tried everything from reinstalling python to xcode..relinking and unlinking.  Below is the error I am getting

ld: library not found for -lpython2.7

clang: error: linker command failed with exit code 1 (use -v to see invocation)

error: command ‘clang++’ failed with exit status 1

I am so desperate for help now that I have put up a project on upwork.com to resolve this.  The trouble is that I am not as well versed in command line syntax on my mac laptop.  I have tried everything I can possible think of but even my experienced friends are unable to resolve it.  So have to get some help.

On the more positive side, I have been keeping up with my reading schedule. I even got one fan for my blog.

 

Spatial Pooler and Nupic Error

I am trying to reinstall Nupic today and getting the sine-wave example to run.  So haven’t had a much time to deliver anything.

As far as Nupic goes, I found this overview on youtube video by Rahul pretty good in terms explaining implementation details for Spatial and Temporal Pooler.  I think once you have grasped the white paper, it’s good to go over this.

My goal is to implement encoder, spatial pooler, temporal pooler, CLA classifier.

I am getting this error in installing Nupic:

clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later). 

I have os 10.10.1, so am already updated.. not sure why i am getting this error.

 

Onto Spatial Pooler

Written by Chirag on Sunday, July 26, 2016 (around: 6:30pm)

This week I am working on the Spatial Pooler from Numenta’s Cortical Learning Algorithm white paper.  Instead of typical CLA (Cortical Learning Algorithm) reading, I will be focused on implementing and testing my own version of CLA-Spatial Pooler (page 34 has the pseudocode).  So that I can  understand it better.

CLA has two key input pooling components. Effectively, in Jeff Hawkins words, pooling is the mapping of a set of inputs (visual, auditory, smell, sensorimotor) onto a single output pattern. There are two basic forms of pooling.

1) Spatial Pooler: “Spatial Pooling” maps two or more patterns together based on bit overlap. If two patterns share sufficient number of bits they are mapped onto a common output pattern.

2) Temporal Pooler: “Temporal Pooling” maps two or more patterns together based on temporal proximity. If two patterns occur adjacent in time they are likely to have a common cause in the world.

Quite honestly, given my limited python skills, I am finding it very difficult to code up the Spatial Pooler.  I am thinking it will take me at least six months. But, I think this will be worth the deep dive.

 

Grinding It Out!

Written by Chirag on Sunday, July 19, 2015 at 6:30pm

 I grinded through my weekly schedule.  One coincidental fact to add was that the Recursion book I am reading quoted Douglas Hofstadter’s GEB book.  This gives me further confidence that recursion might be a useful tool for building intelligent machines.

Here is a basic thought process on when to use recursion. A problem must have three distinct properties.  This is directly quoted from Thinking Recursively by Eric S. Roberts

* It must be possible to decompose the original problem into simpler instances of the same problem.

* Once each of these simpler subproblems has been solved, it must be possible to combine these solutions to produce a solution to the original problem

* As the large problem is broken down into successively less complex ones, those sub problems must eventually become so simple that they can be solved without further subdivision.

At the end of the first chapter, there were three problems to solve.  The last (and the difficult one) asked to find a light weight (counterfeit) coin among 16 coins. If you had a balance which you can use to compare two coins, how many trials would it take to find counterfeit coin among the 16 coins.  The standard answer is four trials but you can do better than that. The answer here is three.   I have uploaded a recursive solution (Recursion1\divideandconquer.py) on my github account.

I also ordered Rajesh Rao’s book Bayesian Brain. This will be on the next reading schedule. I also thought more about reaching out to Neuroscience PhD students. I really want to understand what I can gain out of attending a Neuroscience PhD program. So I have reached out to NJIT, UC San Diego and UT Austin Neuroscience programs.

Strange Loops

Written by Chirag on Sunday, July 12, 2015 at about 2:35pm

Over the past week, I have been more aggressive in trying to keep up with my schedule.   I have added one more book to my weekly reading list and have defined a key question that needs to be answered by science.

1) I have added Thinking Recursively by Eric S. Roberts.

2) The key question is why does our brain think it is alive?  To me it is endlessly fascinating that you can put together bunch of chemicals (as in what’s in our brain) and if put together exactly right, you create a system that thinks it is alive? How does this happen?  To me only person, who has even tried to ask this question and come up with a solution is Douglas Hofstadter in his book GEB. More on this a bit later!

Recursions and Strange Loops

Recursion: Separately, my view is that Strange Loops (Douglas Hofstadter’s Theory) and Recursion are quite related.   Also, as I read more about HTM, I don’t think the Brain uses Bayes’ Theorem directly.  It is coincidental as in the Brain is a memory system, so it is constantly using priors to make future predictions.  So it gives us a feeling that it is using Bayesian Inference to come up with a most likely outcome.

It’s worth emphasizing that Vicarious (AI company) algorithms are defined as Recursive Cortical Networks (RCNs). As per wikipedia, RCN is a visual perception system that interprets the contents of photographs and videos in a manner similar to humans. The system is powered by a balanced approach that takes sensory data, mathematics, and biological plausibility into consideration. On October 22, 2013, beating CAPTCHA, Vicarious announced its AI was reliably able to solve modern CAPTCHAs, with character recognition rates of 90% or better.

Also, I think Recursion by itself is a pretty cool tool to have in your arsenal as it is a super awesome problem solving technique.  I have coded my first recursion example in Python. Yes, am getting little more comfortable with Python and have pushed it out on my Github account here: https://github.com/g402chi

Strange Loops:As I am reading GEB by Douglas Hofstadter and his theory of Strange Loops. Example of Strange Loops are Catch-22s or Which came first the Chicken or the Egg. I like to use examples first because that is usually the easiest way to get a point across.

As per wikipedia:”A strange loop arises when, by moving only upwards or downwards through a hierarchical system, one finds oneself back to where one started.

Strange loops may involve self-reference and paradox. The concept of a strange loop was proposed and extensively discussed by Douglas Hofstadter in Gödel, Escher, Bach, and is further elaborated in Hofstadter’s book I Am a Strange Loop, published in 2007.

A tangled hierarchy is a hierarchical consciousness system in which a strange loop appears. In short, a strange loop is a paradoxical level-crossing feedback loop”

I realize Douglas Hofstadter, in his book GEB, is absolutely trying to answer the right question.  As in how does the brain of any given animal think it is alive.  This is the most key, tremendously important, question that modern science should be trying to answer.  My conjecture is that we can not build truly intelligent machines until we answer this question. My guess on the future is that if the nature is able to build this brain that thinks it is alive, it must be possible to do it.  We need to figure this out. I am not even talking about a human brain, take a C. Elegan brain, ant brain.  However small you would like it to be. All these insects, they are self aware and are acting on their behalf only.

As per Douglas Hofstadter,

“the psychological self arises out of a similar kind of paradox. We are not born with an ‘I’ – the ego emerges only gradually as experience shapes our dense web of active symbols into a tapestry rich and complex enough to begin twisting back upon itself. According to this view the psychological ‘I’ is a narrative fiction, something created only from intake of symbolic data and its own ability to create stories about itself from that data. The consequence is that a perspective (a mind) is a culmination of a unique pattern of symbolic activity in our nervous systems, which suggests that the pattern of symbolic activity that makes identity, that constitutes subjectivity, can be replicated within the brains of others, and perhaps even in artificial brains.

Should I get a Neuroscience, PhD?

Written by Chirag on July 5, 2015 (Sunday) at about 7:15pm

Last week, I was in UK (London, Scotland) and Netherlands. I found it difficult to stick with my AI/Neuroscience learning schedule because of the stress of travel.  So it took me two weeks to get through my routine of going through 5 neuroscience related tasks and 3 casual neuroscience readings/week.   Overall, I am finding Sparse Distributed Memory by Pentti Kanerva a really difficult read. I suspect, I will have to come back to it and reread it four to five times.

Curiously, while in London, I was inspired to learn more about DeepMind founder Demis Hassabis.  As most AI people know, DeepMind was acquired by Google. DeepMind founder Demis H. is a genius (computer science, chess and a gaming prodigy). He has been able to make contribution to the field of AI by spending significant time and effort learning about Neuroscience.  Prior to DeepMind, he spent eight years to be exact getting a neuroscience PhD and on related research work.  According to several youtube videos, he takes a systems neuroscience approach in trying to solve General Intelligence problems.  In Demis Hassabis’s videos, I was glad to hear that his emphasis on learning our brain better and using what is known about the brain to build general intelligence.

He also highlighted that solving intelligence was the most important and difficult problem.  And that it could take up-to 20 years to build human level AI.  All of which motivate me because I feel that it’s worth spending my time on this problem. It was interesting that in one of the interviews, DeepMind cited that the software was unable to play strategy games because it didn’t have the proper imagination/planning functions implemented based on Memory.  I immediately thought of Jeff Hawkins’ memory based framework on this instance. I strongly feel that Numenta has the right approach and it will be able to do cooler things, such as planning and strategizing as it is based on memory and past experiences.

Reading more about Demis Hassabis made me wonder, whether I should go get a Neuroscience PhD.  On my travel to London, I really enjoyed the city and I thought it might not be a bad idea to acquire a PhD in Neuroscience from University College London where Demis Hassabis got his start. UCL (London university) PhD program is only four years and is cheaper than ones in the states.

But, my intuition is telling me to stay the course of self learning AI/ Neuroscience and not fall in the trap of getting a fancy PhD.  It also tells me that modern education system is a sham and everything can be learned by rigorously applying ones self. However, I do concede getting a PhD in Neuroscience (if I was fortunate enough to get into a school) would put me in touch with like minded people and would lend some credibility to my work overtime.

This week most interesting part of my learnings was about Numenta HTM algorithm (Jeff Hawkins’ work).  So far, I have learned the overview of their learning algorithms in three steps.

1) Form a sparse distributed representation of the input

2) Form a representation of the input in the context of previous input

3) Form a prediction based on the current input in the context of previous inputs.

I am hoping to get to the algorithm learning part soon.

Learning Bayes’ Theorem

Written by Chirag on June 21, 2015 at 8:00PM Eastern Time

This is week three of my personal goal of learning/implementing all that is Brain and Neuroscience related.  It’s going pretty well.  I have been quite diligent in keeping up with my nine self-assigned tasks (see previous post table).  This week, what stuck out to me is Bayes’ Theorem.  It is used quite heavily on neuroscience modeling. In fact, a book I am reading “Probabilistic Models of the Brain” noted this

“There is now substantial evidence showing that humans are good Bayesian observers.”

Also a post by Vicarious cofounder, Dileep George, on his blog, references some paper that uses Bayesian Inference.  I have printed out the paper and its on my reading list.  But the key question here again is What the heck is Bayesian Inference???

So from the above statement and other papers I have been reading, it has become pretty clear that I must read all about Thomas Bayes and his Theorem.

In Graduate School and most probably in undergrad statistics classes, I learned about Bayes’ Theorem.  Prior to my readings, I had vague memory of it being something related to conditional probabilities.  I think it’s best to drop an example right about now. I think we all learn from examples, not sure why people start with abstract thinkings.

Bayes’ Theorem basically gives you what is called the posterior probability. A way of reversing conditional probability.  If you’ve got probability of symptom based on disease, how can you get Given a symptom, what is the likelihood you have X disease?  The reverse probabilities are almost always more useful.

P(A|B)  apply Bayes Theorem and you get P(B|A)

One of the most famous mathematician, Carl Jacobi, used to repeat to himself Invert always Invert.. as in solve problems backwards.  Bayes Theorem lets you invert. So it’s a useful tool.

Here is a seriously made up example..

Probability of Heartburn given that you’re an Investment Banker is 90%

Probability of Heartburn given that you’re a Techie is 1%

now what is the probability that you’re an investment banker given that you have a heartburn?? (posterior probability)

or Probability (Investment Banker|Heartburn)

Well it turns out you can figure that out by knowing some probability that you’re an investment banker and percentage of the population that has heartburn.

Let’s say 3% of the population has heartburn

Let’s say 1% of the population is investment bankers.

Probability(Investment Banker|Heartburn) = Probability(HeartBurn|InvestmentBanker) * Probability(Investment Banker)/ Probability(Heartburn)

= 90%*1%/3%  = 30%

This means that if you have a heartburn, there is almost 30% chance that you’re an investment banker.  I know, in this made up world, it would suck to be an investment banker.

Now let’s see if we can figure out probability (Techie|Heartburn)

We need some additional information.  What is the probability that you’re a techie of the population.  In this Utopian world, 30% of the population is Techies.

Probability(Techie|Heartburn) = Probability(HeartBurn|Techie) * Probability(Techie)/ Probability(Heartburn)

= 1% * 30%/3%

= 10% Chance You’re a Techie, if You’ve gotta heartburn.

So basically, you can use above kind of trickery to figure out what someone’s career might be.  Not really, this is just an example. In real world, one can use this kind of inference techniques to figure out what is the probability you have certain disease based on symptoms you show for example.  Two diseases may have similar symptoms  but one is extremely rare.  In which case, the correct conclusion (or inference) may be, with a high degree certainty, that the person has the more common disease and not the super rare deadly disease.  We draw these kind of conclusions in our everyday analysis without realizing.

For example the heartburn example..bankers are notorious for working long hours and eating late at night regularly at a young age..my doctor recently told me.. that almost all young people that come to his office with heartburns are usually investment bankers from a certain firm.  So if you’re a young person, with an heartburn, the doctor might infer that you’re an investment banker.  Even though, investment bankers aren’t a large group of population.

I am sure, I will come up with more relevant example to brains as we go along. But just wanted to give you all a flavor of what is to come.

 

My Plan for Building a Brain

Written by Chirag on Sunday, June 14, 2015

I have formulated a Comprehensive Plan 1.0 to get me really deep in the weeds of learning about Artificial Intelligence. I have a very ambitious goal of developing something brain like, even if it’s 100 X 100 Neurons:-).  I am trying to develop the algorithm on my own so I can manipulate it and understand it very easily.  Ultimate would be to build some product with it.  I am very set on creating a product that’s physical and interacts with the physical world.

I will most likely follow the model by Jeff Hawkins HTM algorithms or Cireneikual’s version (blogger).  I am avoiding academic degree programs purposefully to reach my goal because I think they will slow me down.  Also, school tends to take all the fun out of your hobbies.  I have learned overtime (through experience), that can become expert at anything provided they spend enough time on the material.

Before I present my plan to the world.  It’s worth emphasizing why I am doing this.  I started picking up AI as a hobby because I was just plain interested in brains and how intelligence worked.  I left software industry eight years ago (currently am a bond analyst) and I have always wondered why we have not made a meaningfully progress in AI.  I want to contribute in building intelligent machines and not just machines mimicking intelligent behavior.  I think companies like Vicarious and Numenta are at the forefront of creating intelligent machines.  If you follow their trails (books, papers, people) and read Ray Kurzweil’s Singularity is Near (2005), it will become pretty clear the technology based on cortical principles will be the future of Intelligent Machines and it will affect all matters which concern humanity and this universe.

Approach and Plan to Build a Brain:

I am a very slow learner and my approach to learning is tailored to my learning capabilities.  My main advantage is persistence or drive as they call it. Basically, I learn through repetition and in very small chunks. My day job requires a lot of hours and it’s impossible to put in any significant time during business days.  I read brain and AI related to literature during my commute (40 minutes each way) to NYC.  On Sundays, I do the heavy lifting towards my goal.

My day job is some what unrelated.  I have a medium-term plan of someday committing fully to building “Intelligent Machines”. My background is in computer engineering (bachelors) and masters in computational finance. Over the past eight years, I haven’t really done much coding. I don’t consider VBA coding. So it’s been a real struggle to get up and running on Jeff Hawkins’ NuPIC algorithms (it’s all python based).

Here is my current plan/schedule.  Each item in my plan has a purpose to address my weakness.  As of June 14, 2015 (Sunday), this is what I believe will me push me into understanding all that is NuPIC.  I want to code my own version of HTM (Jeff Hawkins) Algorithm as a starting point. After that, I want to run a lot of examples and really get good at using it.

Here is My Weekly Activity Schedule: Apologies will add the links in coming days to below books. Added Thinking Recursively on July 12, 2015 at 3:52pm.

Goal: Build a Brain
Activity When?
Review All Things Learned: This is a critical step for me. I like to keep what I learned in a repeating loop.  So that it becomes a handy tool in my daily abilities of learning more. I was able to significantly improve my engineering GPA through this approach (starting Junior year).Also constant repetition meant that I never had to study for exams. It meant that I had no stress. I liked that feeling. I want to have that and not be overwhelmed by my hobby. I have already created a set of notes/learnings for this week.  Once they become more coherent, I will post them online. Business Day Commute
Read 5 pages per week on Godel, Escher and Bach (GEB).  In this book, I am hoping D. Hofstadter answers the key question.  How can brain chemicals turn into living/thinking system. Why does a brain think it is alive when its subcomponents are not alive.  Modern so called artificial intelligence is mimicking intelligent behavior but it is not intelligent or alive.  I am hoping GEB answers this question for me. Business Day Commute
Read 5 pages of The Future of the Brain. This is a 2014 book.  I am hoping it will give me a sense of where the Neuroscience and AI field is going. Who are the big people in the field and what are their views. Business Day Commute
Read Numenta White Paper 5 pages/week, Take Digital Notes Weekend
Read 5 pages/week on Sparse Distributed Representations by Kanerva, Take Digital Notes.  It has been shown that brains only store few details of the current state of the world.  Jeff Hawkins’ HTM uses Sparse Distributed Representations (SDR) to reflect this attribute.  I want to understand inside/out what SDRs are and how they are used.  Pentti Kanerva has a book on it. So you know I be reading it/coding it and rereading and recoding it. Weekend
Read 5 pages/week on Bayes’ Inference/Theorem Book, by a British Computational Neuroscientist.  You gotta read this!!Berkley Paper on Bayes’ TheoremBayesian Probability Theoryhttp://greenteapress.com/thinkbayes/html/index.html, this is python examples straight up with explanations. you know I am gonna read this!Examples Take Digital Notes. I want to really get good understanding and applying Bayes’ Inference, Maximum Likelihood Estimators and Markov Chains.  There is a lot of evidence that humans are Bayes’ rule observers. Learned this from the book below. Weekend
Read Probabilistic Models Of the Brain Weekend
Practice python coding at least one hour or Read Python Data Science book week or weekend. Use Github, Look at AI examples.  Right now I am using codeacademyand am reading Datascience from Scratch

Read Thinking Recursively, 5 pages/week by Eric S. Roberts

Weekend/Business Day
Update The Blog.  I want to do this step because I want to attract like minded people and get a useful dialogue going. You know get the crowd sourcing going a bit. Set of a global meme on “building a brain”, in a crowd sourced way. Weekend