Math for Programmers, 3D graphics, machine learning, and simulations with Python, Version 10, Copyright 2020 Manning Publications
My (fictional) friend Jane is a full-stack web developer working at a medium size tech company in San Francisco. In college, Jane didn't study computer science or any mathematical subjects in depth, and she started her career as a product manager. Over the last ten years, she picked up coding in Python and JavaScript and was able to transition into software engineering. Now, at her new job, she is one of the most capable programmers on the team, able to build databases, web services, and user interfaces required to deliver important new features to customers. Clearly she is pretty smart!
Jane realizes that learning data science could help her design and implement better features at work, using data to improve the experience for her customers. Most days on the train to work, Jane reads blogs and articles about new technologies, and recently she's been amazed by a few about a topic called "deep learning". One article talked about Google's AlphaGo, powered by deep learning, which was able to beat the top human players in the world in a board game.
Another article showed stunning impressionist paintings generated from ordinary images, again using a deep learning system. After reading these articles, Jane overheard that her friend-of-a-friend Marcus got a deep learning research job at a "big five" tech company. Marcus is supposedly getting paid over $400,000 a year in cash and stock. Thinking about the next step in her career, what more could she want than to work on a fascinating and lucrative problem?
Jane did some research and found an authoritative (and free!) resource online: the book Deep Learning by Goodfellow et al. The introduction read much like the technical blog posts she was used to, and got her even more excited about learning the topic. But as she kept reading, the content got harder. The first chapter covered the required math concepts and introduced a lot of terminology and notation that Jane had never seen. She skimmed it and tried to get on to the meat of the book, but it got harder and harder.
Jane decided she needed to pause her study of AI until she learned some math. Fortunately the math chapter of Deep Learning listed a reference on "linear algebra" for students who had never seen the topic before. She tracked down this textbook - Linear Algebra by Georgi Shilov - and discovered that it was 400 pages long and equally as dense as Deep Learning.
After spending an afternoon reading abstruse theorems about concepts like "number fields", "determinants", and "cofactors", she called it quits. She had no idea how these concepts were going to help her write a program to win a board game or generate artwork, and she no longer cared to spend dozens of hours with this dry material to find out. Jane and I met to catch up over a cup of coffee. She told me about her struggles reading real AI literature because she didn't know linear algebra. cofactor(余因子)在Espresso(一个很强的逻辑表达式化简算法)里也出现了。
Recently, I’m hearing a lot of the same form of lamentation: I'm trying to read about [new technology] but it seems like I need to learn [math topic] first. Her approach was admirable: she tracked down the best resource for the subject she wanted to learn and sought out resources for prerequisites she was missing. But in taking that approach to its logical conclusion, she found herself in a nauseating "depth-first" search of technical literature.
College-level math books like the linear algebra book Jane picked up tend to be very formulaic. Every section follows the same recipe:
1. A definition for a new term is given
2. One or more propositions are given, which are facts you can deduce from the definition
3. A major theorem is stated, which is like a proposition but more important
4. A formal proof is given for the theorem, which is a rigorous argument that the theorem must be true.
5. Finally, corollaries, which are applications of the theorem, are stated and proved.
"概率与数理统计"我看过10遍,每次都没有前进到第2章。
This sounds like a good, logical order - you introduce what concept you’re talking about, state some conclusions that can be drawn, and then defend them. Then why is it so hard to read advanced math textbooks?
The problem is that this is not how math is actually created. When you’re coming up with new mathematical ideas, there can be a long period of playing around with ideas before you even find the right definitions. I think most professional mathematicians would describe their steps like this:
1. First, invent a game: start playing with some mathematical objects by trying to list them all, find patterns among them, or find one with a particular property. 请注意左边的算24和下面的麻将胡几张,不想知道程序是如何编的吗?
2. Form some conjectures. Speculate about some general facts you can state about your game, and at least convince yourself they must be true.
3. Develop some precise language to describe your game and your conjectures. Your conjectures won’t mean anything until you can communicate them.
4. Finally, with some determination and luck, find a proof for your conjecture, showing why it needs to be true.
The main lesson to learn from this process is that you should start by thinking about big ideas, and the formalism can wait for later. Once you have a rough idea how the math works, the vocabulary and notation will be an asset for you rather than a distraction. Math textbooks usually work in the opposite order, so I recommend them as references rather than introductions to new subjects.
再拿The Gang of Four的"设计模式"和Head First Design Pattern in Java, aka, 如何折腾鸭子们 做个比较。
Instead of reading traditional textbooks, the best way to learn math is to explore ideas and draw your own conclusions. However, you don’t have enough hours in the day to reinvent everything yourself. What is the right balance to strike? I’ll give you my humble opinion, which guides how I’ve written this non-traditional book.
六级/考研单词: mathematics, copyright, fiction, web, medium, compute, transition, hardware, data, implement, blog, lately, amaze, shallow, stun, overhear, fascinate, lucrative, offline, excite, skim, algebra, dense, quit, struggle, missing, logic, recipe, deduce, rigor, speculate, convince, vocabulary, distract, gang, humble