1. 程式人生 > >What If I Am Not Good At Mathematics

What If I Am Not Good At Mathematics

Practitioners of practical subjects can suffer from math envy.

This is where they think that mathematicians are smarter than they are and that they cannot excel in a subject until they “know the math”.

I have seen this first hand, and I have seen it stop people from getting started.

In this post, I want to convince you that you can get started and make great progress in machine learning without being strong in mathematics.

What if I'm Not Good at Mathematics

What if I’m Not Good at Mathematics
Photo by meneldur, some rights reserved

Get Started and Learn by Doing

I didn’t learn boolean logic before I started programming.

I just started programming and you probably did to.

I followed an empirical path that involved trial and error. It is slow and I wrote a lot of bad code, but I was passionately interested and I could see progress.

As I built larger and more complicated software programs I devoured textbooks because they let me build my programs better. I hunted for conceptual and practical tools I could use to overcome the limitations I was actually experiencing.

This was a powerful learning tool. If I had started out programming by being forced to learn boolean logic or concepts like polymorphism, my passion would never have been ignited.

The Danger Zone

I like it when my programs don’t work. It means I have to roll up my sleeves and really understand what is going on.

You can get a long way by copy and pasting code without really understanding it. You only need to understand blocks of code as functional units that do a thing you need done. Glue enough of them together and you have a program that solves the problem you need solved.

This empirical hackery is a great way to learn fast, but a terrifying way to build production systems. This is an important distinction to make. The often spoken of “danger zone” is when systems built from empirical learning are made operational and the author does not really know how it works or what the results actually mean.

This is a very real problem. For example, take a look at some I.T. systems and webpages of small businesses that put up with this level of work.

In my mind, a prototype is a ball of copy-pasted mud held together with sticky tape that might sketch out what a solution could look like.

An operational system or a system that produces results or decisions used operationally has no surprises. You feel comfortable having an all day code review with the team picking over every line of code.

The Technician

You can get started in machine learning today, empirically. Three options available to you are:

  1. Learn to drive a tool like scikit-learn, R or WEKA.
  2. Use libraries that provide algorithms and write little programs
  3. Implement algorithms yourself from tutorials and books.

More than options, this can be the path of the technician from beginner to intermediate that is learning the mathematics required for a technique, just-in-time.

Define small problems, solve them methodically and present the results of what you have learned on your blog. You will start to build up some momentum following this process.

There will be interesting algorithms that you will want to know more about, such as what a particular parameter actually does when you change it or how to get better results from a particular algorithm.

This will drive you to want (need) to understand how that technique really works and what it is doing. You may draw pictures of data flow and transformations, but eventually, you will need to internalize the vector or matrix representations and transformations that are occurring, only because it is the best tools we have available to clearly unambiguously describe what is going on.

You can remain the empiricist. I call this the path of the technician.

You can build up an empirical intuition of which methods to use and how to use them. You can also learn just enough algebra to be able to read algorithm descriptions and turn them into code.

There is a path here for the skilled technician to create tools, plug-in’s and even operational systems that use machine learning.

The technician is contrasted to the theoretician at the other end of the scale. The theoretician can:

  1. Internalize existing methods.
  2. Propose extensions to existing methods.
  3. Devise entirely new methods.

The theoretician may be able to demonstrate the capability of a method in the abstract, but is likely insufficiently skilled to turn the methods into code beyond prototype demonstration systems at best.

You can learn as little or as much mathematics as you like, just in time. Focus on your strengths and be honest about your limitations.

Mathematics is Critical, Later

If you have to learn linear algebra just-in-time, why not learn it fully more completely up front and understand the machine learning methods at this deep level from the beginning?

This is certainly an option, perhaps the most efficient option which is why it is the path used to teach in university. It’s just not the only option available to you.

Just like learning to program by starting with logic and abstract concepts, internalizing machine learning theory may not be the most efficient way for you to get started.

In this post, you learned that there is a path available for the technician separate from that of the theoretician.

You learned that the technician can learn the mathematical representations and descriptions of machine learning algorithms just-in-time. You also learned that the danger zone for the technician is overconfidence and the risk of putting systems into production that are poorly understood.

This might be a controversial post, leave a comment and let me know what you think.

相關推薦

What If I Am Not Good At Mathematics

Tweet Share Share Google Plus Practitioners of practical subjects can suffer from math envy. Th

MIT's latest A.I. is freakishly good at determining what's going on in videos

Just a few frames of information telling a story are all we need to understand what is going on. This is, after all, the basis for comic books -- which pro

What if I were the CIO for Massachusetts?

Could the adoption of a GaaP help resolve some of the challenges? The high-level answer is “likely yes.” GaaP offers numerous benefits over the existing IT

Yes, I coded a Semaphore and no, I am not an OS developer.

You are sitting in an 8th standard Mathematics classroom reading about Pythagorean Triplets, you are mugging up the Pythagoras Theorem. The famous equation

What if I told you we help ppl learn programming for free?

And for those who have been wanting to switch to a software engineering degree but don't have the luxury to quit their 8am-5pm jobs, we provide them with a

Potter:I am not for learning and learning, but for study and work

看不少文章都沒有弄得這個泛型到底是做什麼的,怎麼用?下面這篇文章就用最通俗的話來介紹...一看就明白規則和限制:       1、泛型的型別引數只能是類型別(包括自定義類),不能是簡單型別。   2、同一種泛型可以對應多個版本(因為引數型別是不確定的),不同版本的泛型類例項是

What if I want to add custom data to my warehouse? Documentation

You can freely load data into your Segment Warehouse to join against your source data tables.The only restriction when loading your own data into your conn

I am not a quitter.

1  陣列的宣告使用陣列時,必須宣告一個變數來引用陣列,同時確定陣列變數的型別,如以下語法:var z:Array[String] = new Array[String](3) or var z =

Topic about SOA i am not cleared

1 Exception Contral in bpm2 Long Transaction3 Message BrokerMessage brokers may use MOM to transport messages    4 what's the difference b

【凡事預則立,不預則廢】I am a little little girl in a big big world,But that is not a big big thing if you leave me alone.

I am a little little girl in a big big world,But that is not a big big thing if you leave me alone.

Ask HN: “If that was not open source, I would be screwed”

I recently had a moment where I really appreciated running most of our stack on open source system. Needless to say it was a weird interaction with the way

Ask HN: I am currently the only developer in a startup. What to expect?

> you will be blamed for everythingYes. I'm going to venture to say that if you sense this at all or you can already feel like you know that your co-wor

Ask HN: Why am I blowing my interviews at great companies in the Bay Area?

The problem here is that you only have your own perspective. You may feel that you answered the technical question flawlessly but the interviewer may have

Ask HN: What can I do to get into a good MSc program from an unknown university?

I will graduate from university in mid-2019, with a CGPA of 8.6/10. Thing is, I don't have anything that distinguishes me from other candidates. Undergrads

Monero: Confidential Transactions, or Send I Know Not What to Someone I Know Not Whither

Monero: Confidential Transactions, or Send I Know Not What to Someone I Know Not WhitherWe continue our series in which we explore the inner workings of th

I am what i am

本篇部落格主要整理基於深度學習的目標檢測所用的資料集, 評價指標見上一篇部落格。 參考連結: 1、連結1 2、連結2 3、連結3 1、Pascal VOC VOC綜述 VOC資料集是目標檢測經常用的一個數據集,從05年到12年都會舉辦

Error: Android SDK not found. Make sure that it is installed. If it is not at the default location,

自從升級android studio2.3.1後,執行ionic專案時無法再在android平臺上啟動。網上查了很多資訊後,得知是android sdk廢棄android命令,以及改變了目錄結構。 解決辦法如下: 移除android sdk目錄的tools

Ask HN: As a programmer, how do you know if you're a good one or not?

I always want to be a better version of myself, but it's unclear how to quantify my quality. In sporting, there're many stats about athletes to look at. In

ERROR: resetting DM9000 -> not responding dm9000 not found at 0x88000000問題解決

id號 each erro 網卡 網卡通信 12.1 otg esp [0 ERROR: resetting DM9000 -> not responding dm9000 not fo

configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.

lan apr-util 網址 子目錄 htm .com cal 快的 content Apache在2.4版本以後,編譯時: # ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-so