The last day of the year is usually a good time to recall what we have learned, accomplished since January 1st, possibly what we haven’t accomplished and what we are planning for the following year.
Exactly a year ago I challenged myself. Let me share my adventure with you. I hope that it will provide a useful data point and hopefully a source of inspiration for someone.
Just to give you a short introduction. I am a researcher. I like asking questions and figuring out how to answer them. My question was this:
Given the abundance of human knowledge available online, could one learn something non-trivial in a self-taught (unsupervised) manner just by browsing the internet.
While you could quickly say: Yes! or No!, I wanted to do it in a more scientific way. I decided to run an experiment on myself. In this article I will describe what I did and the outcome of this experiment as concretely as possible — because the essence of science is reproducibility, right?
I hope that you are still with me. If so, then I’ll say a little bit more about my motivation.
The main reason is the fact that I do research on Artificial Intelligence (AI). More specifically, I am interested in unsupervised learning. This is a kind of AI that could gather data automatically and figure out what to do with it.
There is a nice blog post by Andrej Karpathy about trying to classify images manually in order to determine the human performance on data which would available to AI
I decided that it would be nice to do something like this, but on something more complex.
But that was not the only reason. Many times in my life I have heard that you really need formal education in order to do something and that it is essential to get proper training (by someone who is already a master at something). As a consequence, you need to determine your destiny very early in your life and then live with it. I disagree. I think that it used to be the case, but is not anymore.
Especially in machine learning community there is an ongoing debate on whether it is necessary to possess an official degree or not. I have a PhD degree in Computer Science, so I might be the right person to say that you don’t need one. What you do need is this:
I think I am curious and I can endure a lot, the third one may need some practice, but can be learned. That’s it.
Assembly of a 2.5-liter 4-cylinder turbocharged boxer engine (EJ257) with Active Valve Control System (AVCS) manufactured by Fuji Heavy Industries.
I was lucky to some extent that I had something non-trivial that needed to be done (I had some time I could donate to science). It met all the conditions:
Disassemble, repair, assemble. Run for 10000 miles (when you go to a professional mechanic, they will give you this kind of warranty)
Imitate. Learn by watching a single YouTube video. Don’t do something overly clever.
It worked (passed 10000 mile mark today). Without further ado, I will describe what I did. If you are not interested in details, you can skip to the end.
In this section I will:
Without further ado, I will describe what I did next.
As mentioned before, I had almost zero knowledge about this (full disclaimer: I changed brake pads previously).
This is the video I used and attempted to reverse engineer what was being done. I could assume that the guy (Frank?) knows what to do, because at the end he starts the engine and it works. But all I could do was to watch and imitate. Try it yourself (the is no commentary and everything is sped up)
Based on the YT video, I tried to figure out what are the tools and parts necessary. For that I used Subaru site and ordered parts which I needed (initially I did not even know what I needed, it turned out that the replacement parts cost me $500). I also found various discussions on Subaru boards, but they were not that much useful as there were either conflicting descriptions or people claimed (again), that only mechanics should handle this.
My budget for tools was $1000 (to make it realistic). I made a few purchases of Amazon: Engine Crane (~$300), Impact wrench ($200), Some other wrenches ($200) and hoped I could figure out how to use them.
The experiment officially commenced on January 1st, 2018.
The main problem related to this part was to find proper tools and identify all the parts (segmentation?). I also anticipated further issues with figuring out with parts belonged where, so I needed a system to track them.
One pretty useful heuristic when solving this task was to identify all bolts/screws and remove them. I also compared consecutive frames in order to determine what was removed. This was little bit like ‘spot the difference’ game.
From the perspective of imitation learning, I primarily relied on image classification. I actually extracted frames from the video a few times and ran them through reverse image search. The hardest objects were the tools:
Some more complex examples require action recognition:
Here’s some documentation:
Success. I was able to find the root cause of the problem. In order to fix the issue, I needed to replace 4 piston rod bearings. At the same time I decided to get a brand new set of forged pistons and rods, get the crankshaft and cylinder heads machined. Replace timing belt, etc. After all, I was not paying for labor. This part was mostly about figuring out part numbers and waiting.
The hardest part (as expected). Here, I needed to purchase a few extra tools:
Most of the work was related to figuring out which bolt goes where. The heuristic used here was doing things in the reverse order (I put the parts in plastic bags with time and date during disassembly). There was also a lot of measuring and reassembling things 2 or 3 times, because I missed something.
From the AI standpoint, the hardest part was related to the part at 12:24 in the video.
SOME more photo-journalism:
After putting the engine in, there were a few parts which I had to fix (missing wire, etc). This took me about a day, then we everything ‘compiled’, the engine started on April 18th and today I decided to conclude.
During this phase, I tried anything to find an issue, I even used a microscope and looked for something in the oil, but nothing there.
I have driven 10000 miles (just passed the mark today) and it still works. I have no issues with it. I also checked the power, it is exactly the same as before. Fuel consumption is even lower. Everything is in order.
It took about 100 hours of physical labor and probably twice as much time in research (watching that YouTube video over and over again, probably I watched it about 50 times). I believe that AI is changing the world and we will probably see bots learning from videos like this one.
The hardest part was getting through the noise in information — there are places where you will see conflicting directions. This is where it is kind of useful to have a PhD degree — you are just trained to do this.
Overall, I can easily say that now I am at least as qualified as some mechanics I talked with before. Changing oil now takes me about 10 minutes.
If you really want to do something, just do it. The worst is that you’ll learn something and fail, and the best that if you consider what is available online nowadays, it will change your life and give you a lot of satisfaction. Just be prepared to fail a lot and be patient.
Happy New Year! Let this inspire you to learn something new in 2019.
P.S. Let me know if you would like to learn more about this work. I tried not to go too deep.
Armed with this knowledge, this is obvious, I’m now working on using Reinforcement Learning to swap the original control unit with a Neural Net based one:). Just started working on a piece of code which hopefully can provide more power and lower fuel consumption by learning how to control the combustion process — isn’t anyone working on this?