The final year project

2 minute read

Published:

It has been in March. If everything goes well, I could graduate in four months and go somewhere in six months. But is everything going well?

Back to the beginning of the senior year, I decided to record all the progress of the final year project in a GitHub repo. But it turns out to be a daydream. The problem is that I was just in a loop, had a difficult time trying to find an optimal way to preprocess the data, ended up with simply deprecating the part with overly high variances. And it is preprocessing, which means I have to repeat all works after a modification. A piece of good news is that there is not much time left thus I won’t change the preprocessing part anymore.

How about the neural network structure used in the project? In the very beginning of the project, about seven months ago, I tried a naive one-dimensional convolution network which achieved a mediocre performance (about two-thirds samples can be classified correctly). In the next month, I tried a structure proposed in this paper. It was not bad, brought about a 5% improvement to the classification accuracy. But that’s all. The advisor said: “So, in fact, you didn’t do something impressive during this summer, right?” In the following three months, I was curious about the manifold of the sample space, and how the EEG signal pieces distributed in the space. I guess I have a picture in my mind. I tried some sequential models with self-attention (recently, the superstar in the past year was also challenged) to describe the signals and at the end of last year, it seemed that I got the key: the accuracy was 99% with an attention model.

Of course, I noticed the results were weird. How could it be possible to achieve 99% on this task? I printed the information of the datasets, both training and testing set, made sure I got them right. “I didn’t perform the test phase on training set”, with this belief, I reported to advisor and started the winter holiday.

It was just a lie to myself. After the winter holiday, I found that though the training dataset and testing dataset were loaded as predicted, the testing set was used in both training and testing. That explained why my slow machine took only two minutes to train each epoch. And when I got everything right, the result turned out to be stupid: 50% at the initialization and still 50% after training. The network didn’t work at all.

So in short, I made no breakthrough impressive in the past half year and even worse, not clear about what to do now. But

Never give up.