Sunday, April 23, 2017

Beauty and the Beast (2017 film)

An incredible story. An amazing story. A story that has continued to capture my heart since the day I first saw it in 1991. The live remake of the 1991 animated film adds to the story by trying to clarify Belle's and the Beast's childhoods, although I felt that these parts weren't really necessary since it was already a great story to begin with.

What really captures me is the story, about not being afraid to live life as you are (even if you are the only girl in the village who can read) and to look beyond appearances ("for who could learn to love a beast?"). Both the animated film and this new remake combines a great story with great visuals and amazing music.

Yet another great work by Disney that will touch your hearts and bring tears to your eyes.

#BeautyandtheBeast

Tuesday, April 18, 2017

Some thoughts on artificial intelligence

Enabling Continual Learning in Neural Networks

This is an article about a month ago from DeepMind. It does seem that we are getting a bit closer to being able to use artificial neural networks (ANN) to replicate the learning that takes place in the human brain.

And I think that is where the problem lies.

We are trying to replicate the human brain, but is the human brain the best model for learning?

An example. My eight-year-old son and I both watch the same Star Wars movie together. Yet he can recall a lot more details (the scenes, the people, even the music) about the movie compared to what I can recall.

If what DeepMind is doing is a hint, it may mean that our brains are also trying to optimize the limited synapses (although the number of synapses in the brain is way beyond what any ANN has now) in the brain. Which means that once we have used our brains to learn a certain amount of things, any additional learning is going to mean readjusting the connections (weakening our memories in some areas) to learn those new things.

Going down this road, it suggests that making machines think and learn like humans may not be optimal, as the way our brains learn has a serious flaw--it needs to weaken our ability to recall what we have already learnt, in order for us to learn new things.

If only there is some other way to learn things without having to forget what we have learnt. Well, for our mortal brains, that may not be an option, but it is something that we can try in our attempts at giving intelligence to machines. And I think that is the Holy Grail of artificial intelligence--to arrive at a model for machine learning that surpasses the human brain.

#DeepMind #AI

Friday, April 14, 2017

Pay and productivity

OECD urges Japan to promote labor reforms; calls wage growth 'muted'

Just wondering.
Maybe the Japanese work overtime because of poor pay. I mean, if they are productive and finish work within office hours, they actually earn less money than if they were unproductive, work overtime, and clock overtime pay doing the same work.

Maybe, just maybe, raising wages will both improve productivity and reduce overtime.

U.S drops "mother of all bomb" on Afghanistan

U.S drops "mother of all bombs" on ISIS caves in Afghanistan

Yet another move by the Trump administration. But again, what is the overall strategy? We all know that military strikes alone don't work. If they did, it would have worked long ago. What is the overall strategy that Trump has to deal with ISIS? Does he even have a strategy, beyond "blow them when I feel like it"?

Sunday, April 02, 2017

A simple solution to a scrolling text window in wxPython

This is a very simple solution I found to implement a scrolling text window in wxPython.

The problem is trying to set a StaticText widget to fit into some form of scrolling widget so that a large amount of text can be displayed in a scrolling text window. After trying out many methods, not getting the results that I want, I managed to find a solution. Which is to use a read-only multi-line TextCtrl.

self.textpanel = wx.TextCtrl(panel, 
                    style=wx.TE_MULTILINE|wx.TE_READONLY)

Then, to set the text, just use:
self.textpanel.SetValue(s)

That's all! Just two lines of code.

No need to mess with ScrolledPanel or ScrolledWindow. I tried those, they do work, but it is a bit more complicated.