Daym has it really been 9 months since the last review? So… basically, I took a 3 module (6 months) hiatus because I got a new job. I knew I couldn’t hack both so I took a leave of absence which in the end was the right choice because I’m basically level -1 at work, learning everything from scratch and I will have 0 brain energy left by the time I finish work and need to start studying. After having time off I actually came back fresher than ever and ready for uni. I forgot to mention I changed pathways from data analytics to artificial intelligence and boy am I glad!! It’s so much more interesting. I was on schedule for the first time in my life in study but I still ended up working on it until 2am every night and writing it up until the last minute – though some things just never change 😂😅
This module firstly covers the philosophical aspect of artificial intelligence and what constitutes as AI, ethics and a bit about the history (Alan Turing, Ada LoveLace etc). This was quite interesting but it only covers it briefly. I think the theoretical stuff was covered in the Artificial Intelligence Machine Learning module which is what I will do next. Most of the work is reading a couple of the books which have been the most interesting ones they’ve given us – by far.
- Metaheuristics: From Design to Implementation
- How to solve it: Modern Heuristics
- Artificial Intelligence: A Modern Approach
Then after you cover those basics you learn about the different types of problems that can be solved computationally. A bit about breadth-first search, depth-first search just to get the foundations of traversal searching etc. And then we learnt about the different algorithms used to solve different types of problems namely using local search heuristics. A heuristic algorithm is a technique designed to solve problems that you can’t usually solve easily. It’s different to a normal algorithm because the solution isn’t specific or known. The algorithm is trying to look for a solution for a problem by making educated guesses which serves as a guide for subsequent explorations. Which is why I guess it’s used in machine learning. I always pictured a robot in machine learning and just sucking in the internet like Neo does in Matrix and suddenly is a black belt kung fu in like 2 seconds.
The KnapSack Problem
The module content was lacklustre as usual but the topics were on point and really interesting. It took A LOT of external learning supplemented by Youtubing about 5 different videos on the same topic to actually understand what each algorithm did. Once you understand it then you do the fun part! You start coding your own algorithms to solve simple problems like the KnapSack problem. The knapSack is a type of problem where you have multiple items each with a weight and value and you’re trying to fill a bag that can only fit a specific weight with the maximum value of items. This can be used for say filling an on-flight suitcase that has a 10kg weight restriction. You want to bring the most valuable items that weigh the least. Therefore, which items are you going to put in? How do you know they’re the maximum value? It could be a combination of any of them. This is where a local search algorithm (heuristics) can help you do that by selecting a random start combination and using some form of switching criteria to find a collection of other combinations (the neighborhood search space) and iteratively using this to find a better solution than the previous one. Ultimately you want to find the best combination of items so we had to program different types of heuristic algorithms to solve this problem to see which one found the best solution, the quickest, the least computationally exhaustive etc etc.
Coding the Algorithms
Considering I learnt Python from the Advanced Programming module the coding part was really challenging. It took me 3 days to just get 1 algorithm working so I was up until 2am every night 😅 Despite my slowpoke speed I was so relieved when it started to work and it was quite cool! You just plug in your parameters and it actually finds you solutions to the problems. One word of warning chooses and learn 1 programming language of choice – writing the algorithms really helped me understand how searching for a solution worked. They’re not fussed which programming language you choose but they won’t be able to help you with any of it or even guide you with it 😳 I tried to send mine over when I got stuck and my tutor was like “sorry I can’t help you with this” 😭 They even sent us the solutions in Matlab which they’ve never asked us to learn or mentioned it ever before which is really weird and useless.
The algorithms we had to program were: genetic algorithm, steepest hill ascent climbing, hill climbing, tabu search and simulated annealing.
Here are all the algorithms I wrote in case you’re interested. You’re free to copy them and change them a bit as long as you understand that my programming is beginner level LOL. I saw other people in my class writing algorithms about 1/10 of the lines I had done mine in so… WARNING
I still don’t know if my algorithms were right but I handed in the formative (a formative is an assignment you hand in mid module that isn’t marked but you get feed back on) and the tutor said it looked okay from the comments. They don’t really mark you on your programming skills or your bit of code or whether it runs or not so I think you can get away with just using libraries. Coding it from scratch helped me learn and retain what each one did. I used to hear the term greedy algorithm thrown around for ages and not actually understood how it worked and now after writing it a few times it’s like ingrained into my brain. But that’s just how I work and each person learns differently.
After that, we learned a bit about Neural Networks – when I mean a bit… I literally mean A BIT. They give you 1 paragraph and are like and there you go… Neural Networks..I was a bit like da fuq? Once again I spent all my nights on youtube. A brief overview on neural networks, like the name, emulate neurones in the brain to recognise the relationship between lots of data. Then you can use this neural network that’s been trained to recognise a certain thing based on the relationship of instructions it has formed! The difference between NN and other machine learning models is that it does the tuning and making intelligence decisions itself whereas in ML the decisions are based on only what has been learnt. That’s why NN is considered deep learning. You can play around with a basic NN on sklearn which is pretty fun.
Machine Learning Models
Then they briefly covered a few supervised learning models. These are ML models that learn from the input data and produce desired outputs. Yet again they taught us this in the form of one tiny paragraph each 🙁 It was so bad. Luckily we had covered these models a bit in the Big Data Analytics module but even in that module, I didn’t know they were machine learning models. I just thought they were techniques to use on data lol. We covered: Linear Regression, Naive Bayes, Support Vector Machine and Decision Trees.
We used some of the learning models on the MNIST dataset whichis an image with loads of dodgy looking fuzzy letters and we use training models in this image to “recognise” them and then tried to use the prediction to see if the model would guess accurately. It was pretty basic stuff but it showed us how to use tools and capabilities. We got a choice to use what we wanted they suggested Tensorflow or WEKA. I used Tensorflow(kera) to classify the text but I decided to use Sklearn because I mostly used ML rather than DL. I wish I had done more deep learning but I have two months off so I may just fiddle around with it because I really want to get a start on what I want to build for the final project.
If you are not accustomed to programming fear not, we also use this program called WEKA which is a collection of machine learning algorithms for data mining tasks. It contains tools for pre-processing, classification, regression, clustering, visualisations at a click of a button. I hated it to begin with because I mean…who da f uses WEKA for ML? But it seems like lots of large corporations and enterprises do. After using it in the last module the ease of setup, speed and the simple split testing with lots of functions makes it really efficient too. I didn’t use it in the end because I love Python programming and it was basically the highlight of this course that I got to code again – but if you don’t have a lot of time to learn all the techniques or how to use an entirely new programming language or learn how to use a ML library etc. It will save you tons of time and it’s used throughout this Master’s degree.
I can’t reveal what we did but I can say it was a fun, quite challenging technical assignment and was definitely one of my favourites out of what we’ve done so far. The issue with this assignment was that it was a huge jump from what they taught us and what the assignment was asking for. I was really clueless for a lot of it considering they gave us so little information in the modules in regards how to approach the assignment. We were taught the tools but not really the processes. I wasn’t sure what they expected. Anyways, the thing that helped me the most was actually reading the scientific reports on the same topics. Previously, I did not realise the significance of scientific reports and how much they help you build your own theories and ideologies and apply them to your own work. Not only that the report/assignment you write should be based on your own experiments but also a lot is based on the research you find. I don’t really know if I will pass but I do know that I now understand the significant importance of the existing experiments in the same domain using similar/dissimilar tools because it really paves how you approach and conduct your own experiments. I mean… if I wanted to use something like a Linear Regression for a multi-class classification problem…and had not done my research… then I’ll be damned. I would have used it and flopped.
The Google Hackathon
Then, during one of the weeks, we got an email saying we could join the Google Hashcode Hackathon. Obviously, I joined it and found a group of random people on our slack channel to team up with. I really wanted to join my work Hackathon but it was right before the assignment deadline so I joined this one instead. I have to say i thought my python coding was adequate level and well it was a fun experience to meet other people on our course. We spent a few days ahead of time trying to solve the previous coding challenges but when it came to the actual competition day I just didn’t know what to do LOL it was too complicated FML. I froze and just kept attempting to write code that just did not work or make sense eventually the more advanced person in our team did some pair programming and I learnt a few things from him. For the task we had to try and create a schedule for a team of developers to finish projects but each project required a certain level of skill in x and x and each person had a level of skill in x and we had to organise these developers into a schedule to try and get the projects done as soon as possible. There was also a document of 8 pages of rules and constraints we had to consider too lol. It was effin hard I don’t know how it’s 16+. I’m definitely going to do it again but first I need to learn more algorithms and libraries and get better at programming.We also called ourselves Scrambled Yorks (after our uni but also a pun on scrambled eggs and because the course is a joke and all scrambled – hehe I came with it of course 😂). The best thing I gained from this was experience of a hackathon, meeting some cool new people in our course and learning about how much I need to improve 😂. Someone in our group suggested the advent of code challenge where you solve a problem in the advent calendar each day with code. I have 2 months off now so I might give it a try – in python of course!
Getting Tutor Help
Previously, I had never really reached out or asked the tutors for help. This time found I was emailing them every few days confused, asking for help or clarification and posting all my answers to the weekly tasks. The more I contribute the more my tutor kind of replied better to my messages and the more I learnt. I don’t think I had ever messaged them up until this point except to say hi 😅😂. So if you’re used to just doing things on your own, self-learning in silence etc then this might be good practice for you as it was for me. I’m very not used to asking for help, reaching out because I think I can do everything myself but that is not the case and you lose out on expert advice, guidance, clarity and maybe an alternative way of thinking.
Errors in the course
There were quite a few mistakes in our course in one case they showed us a mathematical equation that was written in the wrong format 🤦♀️ , there were errors in the video and some of the content included things like [ADD LINK HERE] which is what I do when I write my assignment on the last day beforehand in and I need to fill in all the references lol. Makes me think they rushed through it and just threw it all together but to be fair I guess it’s normal to have some margin of error. I know I make mistakes ALL the time but it’s just a bit awkward if about 300 people are learning the wrong thing.
Despite the mishaps with the course content and lack of real live teaching I still found this course the most enjoyable module I’ve done so far. I liked the structure of topics and the technical tasks we had to do and I feel like I learned a lot because of it. I do think they spent more time for the first half of the module because the content was a bit more packed out and engaging. And I also wished we had more direction for the assignment in terms of expectations of the level of knowledge in content because you know the internet is so vast. You can get super deep into the technical aspects and as the module content was minimal and you start supplement learning from youtube you start ‘overlearning’ which is probably not a good thing because they’re pretty strict at uni. If you start talking about things they haven’t taught you you get penalised lol. Furthermore, it helped me a bit in figuring out the practical aspect on how I would implement ML in my final project which I was really clueless about before this module. Overall it was an interesting module and I kind of wish I knew what I knew in this module when I did BDA and AP but hey ho.. I learnt what I need to learn from each one and I gotta move on. Thanks for reading I hope I haven’t deterred you too much. If you have any questions feel free to ask them here and I’ll try my best to update that post with the latest answers.