Ask Slashdot: How To Get Into Machine Learning?
An anonymous reader writes: I know this is a vague question, but hoping to get some useful feedback anyway. I'm an experienced SW Engineer/Developer who is looking to get into the Machine Learning arena. I have an MS in CS and a solid 15 years of experience in a variety of areas, but no experience in Machine Learning.With that as background, my question is: What is the most time-efficient (and reasonable cost) way to:
(1) Decide whether Machine Learning is for me and
(2) Make myself employable in the field.
An additional constraint is that I can't afford to quit my full-time day job. Thanks.
(1) Decide whether Machine Learning is for me and
(2) Make myself employable in the field.
An additional constraint is that I can't afford to quit my full-time day job. Thanks.
Build a machine and ask it. Sheesh, kids today...
Coursera have a bunch of free courses in ms that start 4th of jan.
First start small like a game.
Teach a computer how to win a Tic-Tac-Toe, or 8 queens.
....Coursera, MIT Distance learning classes, etc. to get a feel for what "machine learning" actually is. Also, bone up on your math skills...it's a math intensive field.
this is how I'm approaching things and I'm looking at it from a doctoral programme standpoint.
my 2 cents
Have you considered online education towards a certificate in machine learning? For example, The University of Washington, via Coursera, offers a certificate in Machine Learning after about 30 weeks of study and a capstone project. You'll need some background in statistics, and familiarity with Python, and you'll have to put in several hours a week. Total cost is about $500.
Finding God in a Dog
Sign up for Coursera and take Andrew Ng's Machine Learning course. It's excellent (took it twice).
That was the turning point of my life--I went from negative zero to positive zero.
Andrew Moore's Data Mining Tutorials are a great resource. http://www.autonlab.org/tutorials/
Get a H1B to get the job!
You pretty much answered your own question, especially with criteria number three: Get involved in Open Source AI.
http://opencog.org/
http://wiki.opencog.org/w/The_Open_Cognition_Project
I am sure there is more than OpenCog. Google is your friend on this one.
Brought to you by Carl's Junior.
I might recommend the following along with the associated free textbook: https://lagunita.stanford.edu/... Textbook: http://www-bcf.usc.edu/~gareth... Afterwards you can look at the more advanced free textbook: http://statweb.stanford.edu/~t...
First, a simple question back to you: why would you like to get into machine learning? What is it that attracts you to the field? Once you have that clear(er) you might be able to make a more well founded choice.
Second, you have a massive advantage to everybody else trying to get into this field: your degree in CS. You know how to conceptualise and solve problems using a computer.
Third, the currently most popular role for someone who does neat stuff with data is called a 'data scientist'. Massive buzzword score, six-legged sheep, but highly employable. Very, very popular in the job market where I live.
Fourth, get your basic skill sets together (although you should know most of this): know how to do shit with data (sql for instance, some 3rd normal form modelling), learn the relevant programming languages (R, python, matlab), follow the courses on the data science track on Coursera, pay for the certificate, put it on linkedin. Get some extra courses in statistics. And, studying something from a domain you're interested in helps as well; economics, supply chain, retail, finance, etc.
Fifth, use your network to find assignments (could be in your current job, could be out of that), start building your real world experience.
Summary: Most importantly: why? Call yourself a data scientist for max buzzword score. Check out Coursera, study a bit. Actually do something with data.
If you want to earn money with it, forget it. A software engineer is a completely different type of computer scientist than data mining and machine learning. You could get another master program on that. But why wasting your 15 years of experience? You need to relearn all the logic stuff from university and couple it with statistics and signal processing. All in all this is heavy duty math stuff.
I happen to know these guys are hiring regular programmers. Start working at a company like that, and you'll soon learn whether you like it or not.
If you actually want to do research, you'll probably need a PhD, no matter where you start working though.
"First they came for the slanderers and i said nothing."
Experiment.... pick a problem, pick an algorithm, collect your training set, show how well your solution was at solving the problem. Start simple... like using a Naive Bayes categorizer to sort mixed URLs of banks, payday loans, and financial news sites into the correct buckets. Then get into the other algorithms that use a burst of air to knock the bad potatoes off the conveyor. The stuff gets more valuable when you start adding in robotics, mechanical engineering, and electrical engineering... There is CS only work too, but a lot more competition on those jobs so if you can apply machine learning in industrial ways (like using drones to update perennial farm field inventory or something like that) then you will be well on your way to $$$.
If you really want to be employable then I recommend getting a nanodegree in Machine Learning through Udacity. https://www.udacity.com/course... One of the things that makes their program stand out is that they use project based learning. Upon completion you have projects that you can present to perspective employers.
Turn off the TV. Go into online learning fast & hard.
Bust your ass and eventually join some of the OSS project/s and volunteer to help.
It gets your name out there and the right people do notice that.
The single most motivating thing for me, personally, was to find real problems to solve and real examples and help on how to solve them. Bonus points for variety and competition and even prizes.
Enter Kaggle -- data mining competitions with an absurd amount of examples, datasets, community posts, forums, curated examples. I really cannot emphasize how much I've learned in this community. Join and try one of the example competitions -- the Titanic one is popular, follow the getting started guides and go from there.
I'm sure there are many other ways, and it may not be for everyone, but this has really been a great resource for me.
What language are you currently using? Try to start getting into the machine learning languages like R and/or Python. Take some of the stat stuff into your day to day job. Like processing some metrics about the dev process/install process/web stats/etc. Take a udacity course. By combining the two you should be able to write a pretty decent resume that shows your education and some practical applications.
Machine learning is meant to learn itself on its own, right?
+1. You may already be too old and too expensive; but a MOOC or two would probably make you competent enough to train your H1B replacement.
Try searching the 'net using "PDF Machine Learning." And read the results.
Ask the question, "what will get me hired?" Easiest way to find that out is searching the 'net using "Jobs Machine Learning"
Let a machine decide if you should do it.
Learn xyz because you have a passion in it; job security or employable should not be the reason. xyz will be replaced by abc the moment you are ready. Also the jobs needing xyz may be off-shored.
..there is only 24 hours in a day -- don't learn something and waste those hours unless you immensely enjoy that field.
If you have already worked 15 years, life is short; start enjoying things which money can't bring. Cut down expenses, manage finances better and hope we reach post-scarcity and you can live off with less money. The point is
From what I know, MI truly expands the horizons of computer science. So someone who wants to be strong in MI; should have a good grasp on CS, algorithms, data structures.
I would view this ACM webinar on the five sub-disciplines in machine learning (assuming you can) and then investigate the listed resources:
http://event.on24.com/wcc/r/10...
Why mod this down? It's fairly accurate. As a 20 year veteran in the field I really do understand where the article poster is coming from and as a 20 year old veteran I also know where the OP of this thread is coming from.
Not to say that people over the age of 40 can't move in the technical world but it's difficult and if pay is a question then it's that much harder. I've been considering moving into other areas of IT myself and I already know that to expect more than 80% of my current pay rate is unrealistic but sometimes it's worth it. I can also say that getting on board with a new technology outside of my exact field is also troublesome and something as intense as machine learning is going to be daunting unless you're already a serious math wiz. Being able to mentally calculate a tip at a restaurant doesn't count as being a math wiz either. Sorry guys, every indicator that the question poster put forth makes me feel bad for him because my guess is that even the best outcome is still going to fall short of where he needs to be at the end of the day. What is a real possibility at 30 is a sad reality at 40. No offense to anyone but we have to face facts.
On a side note, the one thing wrong with the thread poster's attitude is not valuing peer advice. The one thing I can say about this is I'd rather read these threads for good advice on this subject than going through tons of reviews for Jimmy Joe's Bootcamp programs.
The hardest part in machine learning is that while we frequently use the same tools as software engineers, the thinking process is quite different. I work and have worked with some great software engineers as clients, and I hire software engineers as staff. And anyone can learn an API or figure out how to run Hadoop or Spark. This doesn't matter. The main differentiator is math. Projects live and die by the mathematical capacity of the engineers and data scientists working on them. In the end, machine learning is about taking some data, applying some math, and making a prediction. The coding is important--but it is secondary. A staff member who can do real math is worth 10X a good programmer. By that I mean they get their work done faster, require less managerial oversight, and produce better results. And they are not constantly trying to write fancy code. The most important thing you can do is brush up on your math skills. Basic calculus, linear algebra, and statistics.
Caltech has a pretty good introductory course that mixes theory and practical application and its free.
https://work.caltech.edu/telecourse.html
The most-cited book in computer science builds up to machine learning gradually and covers all the other areas of AI as well--essential since hybrid approaches will be important (see: Josh Tenanbaum's work):
http://aima.cs.berkeley.edu/
First and foremost, credentials for CS related AI and machine learning are largely meaningless right now.
So my first piece of advice is to quit 'seeking' instruction like a computer waiting for further input and get into motivating yourself through self study.
Secondly, keep in mind that machine learning is something that will take an enormous amount of time out of your schedule after you've gotten the basics of the learning engine completed. You HAVE to interact with it and allow others to in order for it to truly learn.
With that said, here's some wonderful ways to help others with their AI projects - and also a way for you to to get started researching and studying, from the outside, the dynamics of dialog and interaction that you'll be working on as a CS programmer.
Elbot: http://elbot_e.csoica.artifici...
Cleverbot: http://www.cleverbot.com/
Existor (her name's Evie) is based on the cleverbot script: https://www.existor.com/en/
and Skynet: http://www.skynet-ai.com/
Third. You're an engineer by trade. If you truly want to understand how to make a machine think. Then take psychology courses, marketing courses, education courses, economics beyond macro and micro are all helpful to understand psychological motivation of populations, and more. Why do all this? A machine can 'wait' and consume information, but that doesn't make it intelligent. What makes it intelligent is it's desire to participate in the community it belongs to and that belongs to it. Psychology - whether it's through market forces or internalized - is what we now know as a population motivates. Integrating these into an AI is critical.
Fourth. Take a look information storage and retrieval systems and become an expert in databases, weighted algorithms, and different levels of normalization. The book 'Data Insights' By Hunter Whitney is a wonderful book on information systems and the different potential ways to perceive data. If you're poor like I am, Hunter has distributed a full copy of Data Insights through torrent web sites, with his only request being: If you can afford it, and the book has provided benefit to you, then please pay for the real copy. you can find at any Barnes and Noble in the country
This leads directly to neural networking. My advice from there is to dig into peer to peer networking and to understand how these systems function. Bitcoin's open source, and provides a wonderful example of what not to do with a peer to peer network and information storage, which you can see by the massive gigabit chain you have to download.
Why this is all necessary:
With a MS in CS and 15 years experience, you should by now be able to create at least a mid sized client server or n-tier application, end to end.
Now you gotta figure out your input stimulus for your AI. Are you acquiring information from text input alone? Are you acquiring it through a Kinect device connected via a USB and pulling out 3d data and sound? Are you placing your AI on the internet as a chatbot? Will the thing be mobile? If so, how?
Knowing your stimulus and nailing it down to a few input devices is crucial to developing a learning system.
From there, your next goal is to develop the support systems which 'go' with the AI.
And this can WILDLY vary depending on your methods of stimulation.
For the most part though, if you don't have proficiency with databases and data stores, Then you're not going to understand memory retention schemes for AI properly and how and when to optimize your database and the differences in normalization schemes.
So go get a job in databases for a few years then come back. These are a dime a dozen and easy to find anywhere. Pick your database wisely, you'll probably stick with it for your career - and it's hard not to be a database bigot afterwa
It doesn't help that picking up 'machine learning' isn't exactly on the same scale as picking up the trendy framework or language of the day. It's not clear that the rate we churn through those is actually a good idea; but at least there are huge areas of conceptual similarity that allow somebody versed in yesterday's hot language and environment to pick up today's and tomorrow's with some acclimatization to new vocabulary.
This is pretty much an entire different branch of mathematics, similar only in that the problems are large enough that you need programming skills to implement useful solutions.
..and of course, slashdotters still spend more time fantasizing about eating hot dogs on Mars instead of working on age reversal...
The Stanford course was the best IMHO. It's available on YouTube.
Also, gaining application experience by just making things using something like Google TensorFlow is more helpful than memorising all the theoretical bits.
If you want to hit the scope of the subject then getting a book like "how to solve it: modern heuristics" or the "handbook of metaheuristics" --is a good place to start.
More out there would be any of the genetic programming books by Koza.
Good luck!
Why mod this down? It's fairly accurate. As a 20 year veteran in the field I really do understand where the article poster is coming from and as a 20 year old veteran I also know where the OP of this thread is coming from.
It was modded down because it didn't do anything other than insult the article poster. You provided enough substance to start an actual discussion, but the original AC just acted like a troll.
Not to say that people over the age of 40 can't move in the technical world but it's difficult and if pay is a question then it's that much harder.
This is quite true, especially the last part about pay. I am higher paid than most of my coworkers, but only because of some highly specialized skills I have. If I took a developer job in a completely different technology stack it would be hard to keep my senior developer title and senior developer salary. I assume I would take a 30-40% pay cut to take a job in technologies I am not an expert in. I also assume I could get that pay back in under 5 years; probably under 3. The first time I went from $65k to $130k it took 4 years, so I see little reason why I couldn't reach a similar salary as I have now in a few years. I am a firm belever that any skilled developer can reach an expert level of skill in any area within 3 years.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
How do you have an MS in CS and not already know the answer to that? 15 years ago the small regional university I went to had extensive graduate courses on it taught by professors with jobs in the field (plus normal research roles).
If you haven't had enough interest in the field while getting your MS to even take any of those classes, or read enough /. articles in the last 15 years to give you a basic understanding of the field, I don't know how sucessful you will be. That isn't meant to be a harsh criticism, but rather advise from someone who spent some time in the field during their early years.
At this point, "machine learning" is mostly research based, or done by large pocket companies. You can find some annomolies to that, but most are pretty fringe. So you would either need to go the route of student/professor, or try to get a gig at a company doing the development/research. I think it would be pretty difficult a this stage for you to sucessfully interview at the large shops doing truely innovative work. Most are hiring from the elite of the academic field, and not someone a bit older, with no research/practical history with machine learning. You could probably get a job with less interesting positions, I know Equifax is known to hiring more "recent grad" types without extremely impressive backgrounds to do some of their data processing. These generally tend to be more heuristic based solutions, with the machine being tweaked more by manual manipulation based on data processed. As opposed to the system self identifying and self modifying.
Good luck, and let us know in 10 years how things went!
You might look into the netflix data set. Its been well analyzed and deals with a realistic problem. There is quite a bit of info on approaches available, and you can get the set yourself, so you can experiment on it. The best results are known, so you have something to compare your personal ideas against. Getting the set is a bit of a hassle, but should be doable.
If you want to start playing with some deep learning models, I would highly recommend this page. It provides some basic examples that run right in your browser. Also, this page provides a great guide to working with neural networks without getting bogged down in a bunch of mathematical equations.
Another great resource is Caffe. Caffe is a deep learning framework that will let you define a wide variety of neural networks by just writing a text file. You can run Caffe applications in CPU or GPU mode (a lot of open source deep learning code will only work with GPUs, so being able to run things either way is a nice feature).
If you want to do computer vision, make sure that you read up on fully convolutional neural networks, because they are the big thing right now.
Remember that story about a program that was able to learn how to play just about any Atari game? That is called reinforcement learning, and that's a big thing right now too. Udacity has a great course on reinforcement learning.
Machine learning is a pretty big field. What other subjects do you like? That will definitely help figure out what part of Machine Learning would be more interesting to you. Statistics: The core of conceptual clustering is finding data that relate to each other. Both supervised (you define the concepts and say what the data is) and unsupervised (the machine identifies clusters based on proximity to each other) are heavy into using all of those statistics functions on your calculator. Probability: Bayes Nets are the core of diagnosis and analysis. Deriving Bayes net from real world data is a huge problem area. Puzzles/Shortest Path/Graphs: Machine planning or game theory is less math intensive. The idea is that you may not know if you've "won" until you've reached the end of a bunch of steps - like learning a card game. You may win a trick / hand but lose the game.
If you know a bit of programming Kaggle is an excellent site to learn data science / machine learning. Real problems, tons of scripts and tutorials and the competition admins will answer questions and keep things running smoothly.
And once you place highly in some competitions it will be obvious to employers you know your stuff.
I worked in a machine learning shop for 2 years (doing machine learning...). In my experience, which is entirely anecdotal and limited, machine learning shops resembled academia more closely than industry. By that I mean:
1) They valued credentials that most software shops find almost meaningless (PhD level credentials, Masters at least)
2) The ones I encountered were extremely clique-y. They didn't associate with non-machine learning people.
3) There was an insane amount of dead weight (people doing lots of work but accomplishing nothing) and a general disinterest in practical application. The cliche of "herding cats" was extremely relevant here.
I got away from machine learning and more general AI as quickly as I could because I didn't like the culture. It reminded me too much of academia.
Study statistics, actuarial science stuff, network theory, control theory, circuit theory, and numerical optimization classes.
After that you'll be able to see most books on machine learning are just full of hype. Then you can focus on writing algorithms for problems in the real world.
Here are some points that the OP needs to understand.
1. There are two different levels of expertise with working on machine learning: either as a library/tool user, or as a ML algorithm developer. It is EXACTLY analogous to how one approaches SQL: You can make a great living being a SQL user and knowing how to write efficient queries and build indexes, or you can go deeper and build the SQL engine itself along with its query optimizer, storage layer, etc. If you want to use ML as a library/tool user, you can have a great career as long as you know what tools and algorithms to use. If you want to be a ML algorithm developer, that means you want to work on the innards, such as using new SVM kernels or building new deep learning networks; for this role, you'll usually need a PhD-calibre background heavy in math. I personally started out as a library/tool user with Weka and Mallet, but as I used them more, I was able to understand the math behind them.
2. ML is an abstract field, and it's best to approach it from an applications point of view. Pick a problem that needs ML, such as natural language processing or image recognition. It's important to pick a problem that has an abundant amount of labelled data. There are some fields such as voice recognition where it is terribly difficult to get real labelled data. For NLP (aka computational linguistics), you can start with some basic problems such as document classification (e.g. for this document, is it about sports, business, entertainment, etc.?) or sentiment analytics (e.g. for this Twitter tweet, is it positive or negative?). There are lots of good datasets in the NLP field.
3. You can explore datasets from the Kaggle competitions and the University of California, Irvine, repository: http://archive.ics.uci.edu/ml/
4. Pick a tool and stick with it. I have used Weka, Mallet, and R. You can also use Python and Matlab.
5. When you read the literature, you will find two nearly-synonymous terms: "machine learning" and "data mining". Both are closely related. Machine learning historically comes from the AI community and generally focuses on building better ML algorithms and solving supervised ML problems. Data mining historically comes from the database community and generally focuses on using tools and solving unsupervised ML problems (e.g. finding clusters of similar customers).
6. At the end of the day, creating a better solution does not come down to the ML algorithms themselves. Rather, the better solution comes from the amount of data and what features you are able to extract. As for the many ML algorithms for supervised learning: at the end of the day, your main responsibility will come down to picking the one that best suits your application. It is just like picking which sorting algorithm to use: when do you use Quicksort, and when do you use Mergesort?
7. Here are some really good books that I have personally read:
Beginner level:
- Programming Collective Intelligence by T. Segaran.
- Introduction to Data Mining by P.-N. Tan and M. Steinbach.
Intermediate level:
- Data Mining: Practical Machine Learning Tools by I. Witten and E. Frank. (goes with the Weka tool)
Advanced level:
- Artificial intelligence: A Modern Approach by S. Russell and P. Norvig. (touches on all aspects of AI, such as tic-tac-toe algorithms with minimax and First Order Logic)
- Introduction to Machine Learning by E. Alpaydin
PROTIP: How to tell if you're reading an advanced machine learning book -- if the index contains reference to Vapnik–Chervonenkis dimension or shattering, then the book is hardcore.
Look back at what the US gov/mil was doing in the 1960's, 1970's with advanced digital databases and what it expected from big data sets and emerging AI funding.
1980's 1990's with grants, funding, emerging private sector, academia. The onto the huge early data sets with internet search results been offered for sale.
Follow the data, cash, science and projects. What was done, was expected, never worked, was never mentioned much in public again but got a lot of funding...
Back over the decades that end up with papers like "The Role of Autonomy in DOD Systems" (2012). The funding to change the publics mind on robot, AI "ethics" so a nation can start winning hearts & minds to accept the role of AI controlled weapons systems.
Follow the grants and consider a look back over US mil AI research.
Day job is safe, few journalist or historians have the math or science to read deep into advanced papers without an expert "guide" who will then keep the subject away from risking their own gov/mil clearances.
So a well educated, articulate book bringing together the past and future visions and uses of AI might be a project that fits in with a daily workload. When done, use social media, web 2.0, newspapers, get onto as much US talk radio as you can and get as many interviews in as you can.
Use your understanding of grants, past work to create a vision of US AI research thats interesting to read about.
Domestic spying is now "Benign Information Gathering"
Thanks to all those that took the time for thoughtful answers. This will be a big help.
I even got a kick out of the attacks on my intelligence/technical skills/education/lifestyle choices/fiscal responsibility.
don't bother
The days of expensive commercial packages aren't over but they are limited. As a new talent your best bet is to learn R and go into neural networking etc. packages as needed.
I've read 100's of pages on Neural Networks/Deep Learning/Caffe/CNN
Read this to get a first exposure to modern vocabulary:
https://en.wikipedia.org/wiki/Convolutional_neural_network
Now Read this:
http://www.dspguide.com/ch26.htm
Then this:
http://www.nervanasys.com/demystifying-deep-reinforcement-learning/
Then this:
http://karpathy.github.io/neuralnets/
Now read this again and it will make more sense:
https://en.wikipedia.org/wiki/Convolutional_neural_network
Now study:
http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning
http://cs231n.stanford.edu/syllabus.html
https://www.coursera.org/learn/machine-learning
Now practice:
cs.stanford.edu/people/karpathy/convnetjs/
http://jsfiddle.net/cor5tjau/
http://synaptic.juancazala.com/
Using this data:
https://www.kaggle.com/
http://archive.ics.uci.edu/ml/index.html
http://deeplearning.net/datasets/
http://ccvl.stat.ucla.edu/datasets/
While not the OP and doing some AI/ML programming, I thnk very much the posters that posted links to material. Some I had previously bookmarked, others were new.
Indeed. Machine learning is the trendy term of the whole decade.
Here's your handy guide to the field:
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Microsoft has a browser Ml app GUI that is useful and slick. Makes it easy to try many different approaches and get a feel for munging your own data quickly. Find a free trial as part of azure and or Cortana analyics
"Knowing everything doesn't help..."
There are quite a few MOOCs that address machine learning out there ... Coursera, EdX, MIT, etc. A lot of them offer an additional certificate if you want to pay for it.
About a year ago I completed the Weka Mooc (https://weka.waikato.ac.nz/explorer). Weka is an opensource machine learning / data mining tool that has many different machine learning tools and algorithms.
The mooc part is the course. It was free at the time I did it, but I don't know if it still is. The mooc is run by an experienced machine learning professor. Weka is also maintained and developed in the same department as his.
I highly recommend this course, it was informative, gave me a grasp of machine learning, as well as experience of a popular tool (weka). I was also able to complete it in my own time while working full time and having a family.
Take your hand and hit it with a hammer. Still here? Ok. You passed the first test. Next test is hit your head with that hammer.
Machine is very unforgiving. Those that are good at it are close to being artists. They're also very cleaver. The reason for my first comments is because it'll beat you. Everything has to be exactly right or you get nothing.
My advice is to start with something small. A 6502, if they're still around. An IBM AT class machine is wonderful. Start with a keyboard driver. You can replace the bios code that handles the keyboard. If you can do that to the point it's usable, you have really passed the first test. Hint - don't do a bunch of if statements for the keycodes. That claims around 70% of the people doing this. You have one week to do this. Your big mistake is to wait a minute to start the assignment.
Next write a disk operating system driver. Any OS will do, however I think you'll find a Linux based OS will be the easiest. I'd use Fedora. You can try something like Debian and after you beat your head for a while, come back to Fedora. Then insert your module and see if it works. Test well with it. Once you think it's solid, install a machine that uses it. Make it your log server or something like that. If you can do this, you probably have what it takes. Understand I'm skipping over a few volumes worth of information. Like how to move your code so the keyboard driver uses it. How to do assember, how to use C, how to bind all this stuff. Moving onto Linux - how to deal with building an OS - as distributed (Why I say use Fedora, it's all there and easy to do). How to deal with spin locks, what are spin locks, and all the other stuff including how to use magic keys. Magic keys will save your butt when debugging kernel code. How to use gdb. This all goes back to my comment on hit your hand with a hammer, hit your head with a hammer. This is very difficult. Perhaps the most difficult part of computer science. If you don't have the drive and dedication to do this, take up something else.
By the way, the brotherhood of machine language pros can be ruthless. It's not for the faint of heart. You have to have a very tough ass, or they'll make it bloody. Words really can hurt. They get personal sometimes, don't take it personally. Don't get upset if you work on something for years, get it working really well and they decide to throw it away. It's happened to me, multiple times. Nothing to do with the code, it was a business decision in one case and the guy running the project decided to whack his wife and lover in the other case and got caught. Did I mention this could be tough?
If you have the right stuff, proceed. Glad to have you.