the ghost in the machine

as I moved my old posts to the new site I was struck by just how long it has been since I posted anything at all. if you knew where to look online you could confirm that I continued to exist, but it wasn’t readily apparent. I have had a number of interactions in public recently that have followed a simple script

<them>Woah! I haven’t seen you in years

<me> Yeah… I exist now and then

… spend an hour catching up …

<them> I hope to see you again soon

<me> hopefully it won’t be so long this time.

given that I am not actually a ghost, what has happened in my life that makes it appear that I only exist now and then? the short answer, I am doing a master’s degree in computer science full time and am completely wrapped up in my school work.

the longer answer makes up the bulk of this post. when I applied to do my masters I had every intention of working in the human/computer interaction field, but instead I have found myself pursuing machine learning. during the winter semester last year I took a course about machine learning and discovered that it is a field that connected well with my experiences teaching and working in online education.

so what is machine learning? often I will describe computer related work as “black magic” rather than trying to communicate the details of the work to people that don’t understand it. machine learning is a process where, even knowing all the details of the implementation, I am left believing it is some form of magic. in practice machine learning is the process of solving classification, categorization, or identification problems by training a system with some example data, and then introducing an unknown dataset you want to work with.

you might think to yourself, that seems kind of boring or pointless. trust me, it isn’t. everywhere I look in the media I see mentions of “big data” and “cloud solutions”. these are leveraging machine learning techniques to identify potential customers, treads you might be interested in, or how you will spend your money.

for the final project of the course I took we were presented with a dataset of short camera reviews collected from the web. of the ~45000 reviews in the dataset 2000 of them were labelled as “Pro” for a positive review and “Con” for a negative review. the remaining ~43000 reviews had no label at all. the goal was teach a machine learner from the small set of labelled reviews and have it identify the rest.

some of the training reviews

Pro “Very versatile”

Pro “great picture quality”

Pro “small, simple, cheap”

Pro “Compact, Lightweight, Easy to use, Good for use with little kids, No wasted film, Preview pictures and delete ones you don’t like”

Con “Battery hog, missing ac adapter and charger”

Con “Close-up capability”

Con “Menus are small.”

Con “Technology is still expensive, disks can be filled fast too, user needs a computer to get all the benefits”

as you can see there is a lot of variety in the training examples. some are lists of words, some are full sentences, some are short, and some are long. for the project I created a neural network and trained it using a technique called backpropagation. coming into the problem it seems like it would be quite difficult to determine intentionality from text alone, especially when the samples are all over the place.

instead I was shocked at how well my software could learn to identify intentionality in simple sentences. below I have included some examples from the unlabelled set along with the classification my learner gave them

Pro “Great resolution, versatile, zoom capability”

Con “It is just a bit noisy”

Con “battery usage high, availability of accessories low”

Pro “Portable size and great picture quality!”

Pro “reasonable price; user friendly camera”

Pro “The price!”

Con “CAN’T HEAR ON THE EARPIECE”

skimming through the ~43000 there are definitely some that it classifies incorrectly, but generally I found myself agreeing with the conclusions the software came to. it is truly a strange experience to write a piece of software from scratch and have it accomplish a task like this. everything that happens is something that I explicitly told the program to do, and yet the output is more than the sum of what I put into it.

after completing the project I couldn’t stop thinking about communication mediums and human ability to determine intentionality. the idea that humans communicate more non-verbally than verbally is an old one that is often dragged out to admonish the future generations for too much texting and technology. in my experience it is largely true that people have a hard time determining intent in text only mediums and from this I suspected a machine learner would struggle even more. instead I found that the necessary information is contained in text alone, but we likely haven’t learned to identify it.

I think there are a lot of interesting lessons to be learned about people in the process of teaching learning to computers.