This content originally appeared on Level Up Coding - Medium and was authored by Ronny Polle
A Reflection on my Learning Journey as a Self-taught Machine Learning Researcher/Engineer & Medical Student in Ghana to a Research Intern at Carnegie Mellon University, USA
A Brief History of Time: A Failed Thought Experiment?

I thought that my 2019 was the real rollercoaster until 2020 showed up.
But my journey in AI has been a rollercoaster right from the beginning; from my very first encounter with Coursera’s Machine Learning course taught by professor Andrew Ng of Stanford University in 2016, to the first time I wrote python script implementing and training a machine learning model.
My motivation to pursue a career in AI(whilst studying medicine) sprung from a long-time curiosity to understand patterns surrounding human learning and recall mechanisms. I decided to approach this quest from a purely introspective angle. And so, third year of medical school, I always attempted to analyse my mental processes and thinking patterns whenever I am in the learning state. I will try different configurations of my learning strategies as a way of assessing my learning progress.
I tried different learning techniques with the goal of optimizing for a better understanding and recall. With no access to any external input,books or scientific work, I formulated a ‘hypothesis’. I hypothesised that, by varying my speed of reading, what likely keywords to spot next in a sentence based on understanding gathered from previous paragraphs,varying the way that I look at text documents at a sentence level and a variety of other tweaks, that I was going to efficiently configure my brain to at least somewhat capture an efficient ‘knowledge graph’.
The objective of capturing such knowledge graph is to optimize for efficiency in terms of speed of making connections between concepts and information retrieval. Anytime I engaged in any kind of reading task, I will loop over my thought experiment with an intent of finding inconsistencies significant enough to disprove my conjecture (I do understand that this had little to do with the established scientific method), but for the least, it offered me a fertile ground to better appreciate later, scientific developments such as optimization, attention and memory in the field of AI.
Accidental Machine Learning
Towards the end of 2016, I stumbled upon the term ‘machine learning’ whilst viewing a LinkedIn profile of a connection. I had no clue what the term meant, and so I immediately googled it. What I found was so captivating that I almost immediately related it to what I had been thinking and conceptualizing all along. This revelation gave birth to my curiosity in learning more about machine learning.
For weeks, I was hooked onto coursera’s machine learning course. Unfortunately, I could not afford the paid course, and so I audited it instead. What that meant is that, I did not get full access to the course. Octave was the programming language of choice in this course which gave me a fair introduction to matrix and vector operations. After auditing the course, I got stuck and remained clueless on how to implement machine learning, for a long time. I did not even know that other programming languages were utilized in machine learning.
Although I got stuck on the practical end, one thing kept me excited about machine learning — the gradient descent algorithm. I fell in love with the mathematics ,although I had initially not fully assimilated and crystallized all the mathematics ideas introduced in the course at first. After a few months,I decided to re-audit the course. Then I dabbled around a bit, learning and polishing my programming fundamentals. After my first peek into python on a friend’s computer, I decided it was something worth learning. So I chose to learn python primarily because of its elegance and the simplicity in its syntax, in my opinion. What even fueled my curiosity and interest the more was the wide range of python use cases that I discovered through learning python. I am a mathematics-centric individual; and when I discovered that python could be utilized for building mathematics and physics-based simulations, and for developing software infrastructures that run engines and robots, I simply could not believe it! Imagining that, I just fell in love with the idea of writing code to do some of these amazing things.
Initial Learning Resources
I was already struggling financially in school. Paying for online courses was a luxury for me, partly because I genuinely could not afford. I did not also want to overburden my family, already overstretched by the mere thoughts of paying my medical school fees. So I decided to utilize a lot of online pdf books(I understand it’s not a good practice!) and watching some of Stanford and MIT video lectures on youtube. My strategy was to primarily form good theoretical grounding first, then attempt the practical side of things. I also figured books will do the trick for me because I am an autodidact — I learn best under my own guidance. Some of the books and resources that greatly assisted me — Introduction to Linear Algebra by Gilbert Strang(Professor Gilbert Strang basically uses this book to teach his MIT Linear Algebra course, also made available on youtube), Pattern Recognition and Machine Learning by Christopher Bishop, CS231n:Convolutional Neural Networks for Visual Recognition and dozens of other resources that I uncovered in the process.
‘Talk is cheap. Show me the code’ ~ Linus Torvalds
Several weeks elapsed and I had not figured out a way to getting started with implementing a machine learning project. In terms of programming expertise, I considered myself an intermediate python programmer at the time. Also, I took up the challenge of learning java because I got pretty excited about android application development at the time. Learning java was a great decision because I landed my first contract job at an NGO as Android Application Engineer a couple of months later, then an Android Software Engineer internship at a startup. A major , effective and helpful trick which worked for me during this learning journey was making the decision to single out a programming language of interest and dive right into mastering that. Occasionally ,I watched videos, read books and practiced programming exercises to help crystallize my understanding.
I discovered that the road to achieving mastery through self-teaching is hard and exhausting and perhaps a good reason for the high attrition rates among people who choose the ‘self-taught’ road. However, for my case,I was trying to juggle far too many things simultaneously — it did not help. Seeking mentors in the initial stages is a good thing. They not only help you navigate your way around the common pitfalls solo-learners encounter, but also you will essentially benefit from their wealth of experiential expertise at relatively no cost. With expert guidance, you might even develop effective learning plans to guide you. Better yet: try the online courses. They are really great!
In summary, if there is ever a secret to assuming expertise in anything, I believe that consistency, hardwork, patience and trusting the process will make the top of the list. The process is hard — easier said than done but it is doable. Do not fear making mistakes or not even getting it at first.
Experience
In the process of gaining more experience and momentum, I left no stone unturned in sending out applications for internships,job offers,etc. And the result? : I got accepted a couple of acceptances. But for the rejections, I can not count how many rejection emails I received! To technical recruiters, I guess my background was a ‘No’ to some extent. Nevertheless, I kept on hunting for opportunities , primarily because I was driven by the knowledge and skills that I could garner out of the opportunity more than anything.
There is one thing about learning programming. You can assess your own progress simply by looking at the increasing complexity of tasks you are able to solve with time. As a result,you get drawn to even bigger and exciting technical problems. Be open to learn more through various avenues including internships, personal projects and volunteering. You will get to work with really amazing and smart people. A good thing about working with people is improvement of soft skills’, of which communication is a key component. You may pick up really cool tricks on how to write clean, efficient and high quality code. All these nitty-gritties of learning will expose your understanding to appreciate how the tech ecosystem looks like, the approaches to solving challenging client-facing problems in the business setup and many more.
Challenges of a Medical Student in AI
I met countless challenges attempting to almost effortlessly pursue at least two fields simultaneously. I dabbled around a lot, struggling to strike a balanced mixture out of medicine and my pursuit of AI. The amount of uninterrupted attention and conscious dedication one will need to pursue a successful career in medicine is just as enormous as a successful AI researcher and engineer. ‘So how do you combine AI and medicine?’ is a quesiton I get asked the most. Honest answer is, I do not know. Best guess is ,any free time that I grab out of the world of medical school always feel like a blessing! I try to spend this time across a wide array of activities such as reading AI papers, working on projects, reading , Maths and AI books, or attending AI conferences when I can.
Over a year ago, I decided that I was going to focus on mastering my technical skills. I dedicated a lot of time,financial resources and energy to doing more personally-driven projects. It was an unpleasant process — getting broke and burnt out more often than the number of weeks in a month! On several occasions, I will go for more than 2 weeks without food! But I carried myself with every morsel of energy I could find to walk across the street for academic activities and ward rounds. A mistake I made was ,thinking that my stoic personality will come to my rescue instead of reaching out to family or friends for help.
During this space of time, I developed machine learning projects - from idea to finding datasets and implementations; finding resources on Stackoverflow and Github whenever I got stuck and reading papers related to projects that I was working on. I wrote code, and will occasionally celebrate when a code *finally* run after a long and exhaustive debugging process.
At the end, when you enumerate all the valuable experiences and lessons learnt from actually writing code, you will marvel. Learning is one thing that compounds over time. So your ability to solve related problems and even figure out completely unrelated and more complex problems will improve significantly. You are able to iterate faster through solutions to problems. You develop your problem solving intuition and become experienced at figuring lot of things out, because you are essentially able to transfer knowledge across different projects seamlessly.
Why You Should Participate in Machine Learning Competitions
Some most recent and major advances in machine learning did not originate from research laboratories and giant tech companies alone. My opinion is that machine learning competitions form a vital building block in advancing machine learning research and engineering and not simply beautifying leaderboards with high scoring submissions. It will amaze one to know that most top scoring solutions translate into steering the machine learning community in really good research and engineering directions ; through machine learning competitions, several groundbreaking techniques were developed and open-sourced for the benefit of the entire machine learning community.
During the period of COVID-19 lockdown in Ghana, I decided to engage more in competitive machine learning. I participated in machine learning competitions on Zindi, Kaggle and HackerEarth , where I was primarily focused on the learning experience and as result I ended up working on diverse machine learning problems across over 10 industries! A nice thing about these competitions is how easy it is to obtain annotated datasets for machine learning. Learning and growth is key in the field; which is precisely the key benefit that these platforms offer. Some will argue that you can achieve that simply by working on your own projects. That is also fine, but one good way to assess your growth(knowledge and problem solving skills) is by challenging yourself — machine learning competitions offers you that platform.
Thank you for reading :)
Ghana to the USA: A Reflection on my Learning Journey as a Self-taught Machine Learning Engineer was originally published in Level Up Coding on Medium, where people are continuing the conversation by highlighting and responding to this story.
This content originally appeared on Level Up Coding - Medium and was authored by Ronny Polle

Ronny Polle | Sciencx (2022-03-19T21:17:57+00:00) Ghana to the USA: A Reflection on my Learning Journey as a Self-taught Machine Learning Engineer. Retrieved from https://www.scien.cx/2022/03/19/ghana-to-the-usa-a-reflection-on-my-learning-journey-as-a-self-taught-machine-learning-engineer/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.