Summer updates

I am hanging on in the Machine Learning MOOC! Week 9; barely! I am trying to keep my eye on my progress and focus on how much I have actually learned instead of how frustrating it is to repeatedly get something wrong for several hours in a row.

I was talking to some friends about defining characteristics of success in their occupation, and persistence came up as a candidate for computer science. Persistence is definitely a weak spot for me, and I’m learning both machine learning and programming simultaneously, so this class has been a real trial. Hopefully I will be able to look back on it in the future and say, “if I can finish that machine learning class, I can do this!”

I have mostly stopped weekly planning. Travel, having guests in town, committing to a new project, and trying out a new objective setting plan have colluded to derail that project. I learned a lot, though, and I wholly recommend trying it, even if the lessons you learn are from what stops you 😉

Speaking of which, I’ve started daily objective planning. As part of testing an app my partner is building, I’m setting objectives to further my life’s current projects. I can’t wait to share more info about that app with you, but for now, the practice of daily objective setting generally has been really effective for me. Putting each objective under a large-scale project that I believe is important has been just as motivating as the crossing off of them each day. I have a bigger-picture view of my life and a better ability to balance the urgent with the important.

I fly back startlingly soon and have a lot to do! I’m working on a literature review, so I will have lot of actual science content to share with you shortly :)

Continue Reading

MOOC Week 2: In Which I Cry More than Once

This week in our Machine Learning Coursera class, we had an assignment! So far, we’ve just had formative and evaluative assessments, but today we had to actually program something. I am, let’s say, “under-experienced” with programming. Up until yesterday, my programming accomplishments have been: messing with existing HTML/CSS to make my website pretty, a couple codeacademy courses more than a year ago, and a statistics class, in which I wrestled with R every week to find the correct freaking working directory. Once, with lots of help, I made a button in Javascript. It counted how many times it was pressed. It took hours to make and I cried, but eventually, it worked.

the bowl-shaped plot of a cost function
A cost function, J(θ), for a univariate regression model. Here, θ is a matrix of two values, which are represented on the lower axes: a coefficient for one variable x and a y intercept.

Our assignment yesterday involved programming a Cost Function (in ML, a function mapping the sums of squared errors resulting from potential regression coefficients applied to the same data, which are serving here as training data) and the meaty part of a gradient descent algorithm– a program that will grope around on that cost function (hopefully in an orderly way) to find its minimum. The goal of this exercise is to find the point where the error between the model’s predictions and the actual values are the lowest: the best model to predict future data.

Well. As you can imagine, this was somewhat harder than my hard-won Javascript button. It also involved a lot of matrix algebra, which I had happily forgotten existed up until a week ago.

I made my life significantly more difficult by leaving this assignment to the last day– a day on which I had a brunch to go to and a class to teach. I think you can see where this is going?

Fortunately for me, Brandon took the time while I was teaching to do the assignment first. I would have flunked out last night if it weren’t for him. OK, let’s be honest, I would have flunked out in week 1 if it weren’t for him.

What he discovered, through much annoyance on his part and much to my relief, is that the assignment as written looked very long and complicated (15 pages of instructions!) but really consisted of editing 3 files. It took me a while to believe him and stop reading the assignment instructions, but– let it be known across the Internet (and especially among future Coursera students)– he was right! Saved me hours I did not have to spend parsing the assignment doc.

Of course, it was still difficult. Not only was I having to re-google matrix algebra repeatedly, I had never used Matlab before and had forgotten nearly everything I learned about writing code. The assignment took almost all the time I had available (even with a generous amount of help from B). Repeatedly running code and getting “inner dimensions must agree” was abundantly frustrating. I didn’t have time to take a break and recoup or calm down or be grateful for my progress– I had to get the assignment in by midnight. This is all complicated by my false and self-fulfilling belief that I am inherently bad at math and my long-running battle with a paralyzing fear of failure. By the time I submitted the assignment, I didn’t feel much relief or accomplishment– I felt I was about 11 years old, crying at the dinner table with my dad, trying to get through my algebra homework.

Obviously, we can’t have this happening every weekend for the rest of the summer. So here’s the new plan:

When I feel frustrated, I will take a break. I’ll get a glass of water, take a walk, or lay down for a bit and encourage myself. Remind myself of all the benefits of not getting something right the first time.

We aim to get the assignments done by Tuesday. They are due Sunday night, so we will have plenty of time to be kind to ourselves.

We will keep evaluating the plan so we can make it better if need be.

From this week forward, I’ll be trying to see this class as an opportunity to learn to use failure as a tool for learning (in addition to its curricular topics and Matlab benefits : )

 

Continue Reading