自我介紹
大家好我是scallion,從初中開始我的外號就叫大蔥,漸漸地scallion成為了我最常用的昵稱或者是非正式的英文名字。
和比較常見的興趣愛好不同,我從5歲開始學圍棋,11歲成為國家二級運動員(其實也只是業余水平,離職業道路還有很遠)。一直到初中畢業才停止上圍棋課,圍棋也變就成了我的一門愛好。但是現在的我其實很少下棋,很偶爾才會跟朋友手談一局。我雖然圍棋水平退步嚴重,但是對它還是保持了幾分價值判斷力。很多時候下棋會有一種“我怎么下的這么差”的感覺,每一步棋都不怎么下的出手,卻又想不出更好的走法,結果就下的越來越少。不過我一直覺得我的這種心理現象很有趣。
高中以后長跑和騎行成為了我的主要愛好,我高二的時候參加了杭州國際馬拉松,但是年齡不足20只能跑半程。去年的時候和同學兩天沿着巢湖騎了一圈。到了大學作息沒有高中那么規律,體能反倒是有些不復當年。來了帝都之后准備把鍛煉拾起來。這里不僅有“最美馬拉松”--北京百里山水畫廊森林馬拉松,騎個單車還可以考慮去天津看海。要是有一樣喜歡長跑和騎行的小伙伴歡迎在評論區留言~
現狀、經驗和計划
現狀
我來自中科大物理學院,2016年3月,deepmind的Alphago在五番棋比賽以4:1的比分中擊敗李世石。在比賽結束之前,我從未想過人工智能能夠在圍棋這個task上達到媲美人類的水平。在那時的我看來,深藍擊敗卡斯帕羅夫只能說明電腦算力的強大,而圍棋的精髓不僅在於計算,還在於感覺,這種不能顯式的寫出來的特征是很難被計算機所學到的。最終結果深深震撼了我,讓整個圍棋界回憶起已故去的日本著名棋手藤澤秀行先生的那句名言:棋道一百,我只知七。以此同時,一種“ML一百,我只知七”的感覺在我心中油然而生,促使我從大二開始修讀了計算機雙學位,並最終選擇在計算機方向讀博。
查閱了軟件工程師自我評價表后,我認為以下技能對我特別重要:
- 程序理解
- 代碼質量
- python
- 處理大數據
- 個人源碼管理
就現階段而言,前三項的水平可能是2-3,后兩項的水平可能是1-2。希望在課后5項技能都能達到4-5的水平。本科前三年課余的大部分精力還是放在了物理上,雙學位為了精簡課時基本上刪掉了所有大作業和算法課。導致現在計算機編程基礎較薄弱。具體的方法就是多讀代碼,多花時間實踐,向身邊的人請教。除此之外,我也計划在這一年啃下一兩本大部頭英文書,補充下自己的理論基礎。以及系統性的了解Machine Translation的歷史。
師生關系
對於師生關系,我認為鄒老師總結的健身教練和學員的關系很精辟,也覆蓋了大多數情況,但是就我的個人經驗,我認為師生關系應該是以健身教練和學員為主,其他關系也可以存在。由於個人專業知識和表達能力所限,我無法很精簡的總結我的觀點,我選擇將我遇到過的最有特點的師生關系羅列如下:
- 力學是中科大物理學院大一上學期的課程,由於物理學科的特殊性,導致物理學院大一新生的物理水平參差不齊。物理競賽大神高中就學完理論力學和量子力學了,而純高考進入中科大的同學可能大一上力學期中考試還不會使用微積分解題。在這種極端情況下,要求老師照顧到每一個學生是不可能的。而老師的教學目標只能是照顧那些基礎較差的同學,教授那些力學的入門知識,而這些知識搞物理競賽的同學可能早已爛熟於心。在這種情況下,老師和物理競賽的學生已經不再是健身教練與學員的關系,而是健身教練和畢業學員的關系,雖然老師很博學,但是他的博學無法體現在他講授的課程中間,那么物理競賽出身的學生就完全可以不聽講,選擇自學更高層次的物理知識,在課下和老師單獨交流,這樣才是取得最大收獲的方式。事實上,在物理學院保持領先優勢的競賽學生中,很多同學上基礎課的時候都在自學更高深的教材。在這種情況下,大學生為什么要聽講,這篇文章中的理由也就不成立了。此外,我認為這篇文章中很多措辭都很奇怪,這篇文章指的不聽講似乎就是不學習,我覺得有些狹義了,這么比較得出的是正確而無用的結論。比如:
你在上課的時候,是認真聽講,還是在聊天說話玩手機?-- 難道不認真聽講就只能玩手機了么?
課程講的不好不能成為不聽講的理由。 --老師講的都會也可能成為不聽講的理由。
課程有用無用不是一個大學生的格局能判定的。 --我認為一個優秀的大學生應該在大學生涯中找到自己的方向和興趣,因為最終是為自己而學習,學生需要能自主決定那一門課對他更有用
- 由於某些原因,我在兩所學校(A,B)都修讀過機器學習方面的課程。課程的上課學生均為本科生,且之前沒有學過人工智能有關的課程。但這兩所學校的授課內容完全不同。A學校從logistic回歸開始,講SVM,NN,但是講的更多的是具體算法,冗長的數學推導全部放在ppt上,一頁一頁向下翻,學生跟不上老師的推導方式,課下自己推導有感覺有些費力。到結課的時候,學生學會了各種各樣的機器學習方法,但理論基礎稍微欠缺。B學校開場就介紹機器學習理論,從chernoff bound開始,接着講vc-dimension理論和優化中的duality,全程在黑板上從頭推到尾,很少涉及到具體算法的內容,而是給學生推薦了一些講具體算法的書籍。到結課的時候,一些同學證明了ML theory 中state-of-art的結果,發表在COLT上。評判AB兩個學校那個好是一件見仁見智的事情,可能與我的物理背景有關,我會更喜歡B學校的上課方式。我也很欣賞B學校老師說過的一句話:
“我給你們講的東西,都是我認為我講給你要比你自己學學的快的東西”
綜上,此我希望的師生關系是在健身教練和學員,但教練應該能讓學員在同樣時間能達到優於學員自己健身的效果,如若不然,我認為學員自己健身也不失為一個可行的方法。
最后,關於抄襲,我覺得就課程來言,一切不阻礙教學目標實現的引用都不是抄襲。
宏觀未來規划
現在看起來我會選擇做學術研究,我不是很喜歡做唯performance的工作,所以做太偏應用的工作可能會不是很開心。而且做學術研究一些物理思維可能會有幫助,起碼讓我樂意看一些很理論的推導。但我總歸從事的是CS方向的研究,代碼能力薄弱是我遲早要克服的短板。這學期的計划就是現狀部分結束的那5點。
這門課的計划
我現在代碼量自己也沒有估計過,可能11000行左右。C語言可能寫了5000行,C++寫了3000行,python寫了3000行。雖然前面沒說過前兩年浪費了很多時間,但我還是想奮發向上,我計划每周課下拿出10小時完成這門課。完成代碼量我現在實在沒有什么概念。希望每周都能碼幾百行代碼吧。
博客閱讀
我閱讀了“不要輕易在簡歷上寫我熱愛編程,熱愛學習”。首先聲明本人並沒有在簡歷上寫我熱愛編程,熱愛學習。讀這篇博客主要是想看看大牛的熱愛是怎樣的。和自己對比了下發現他說的那些成就,現在的我的確沒有那個毅力做下來。感覺以后還是要對自己狠一點,尋找興趣,爭取在畢業的時候能說自己熱愛編程。
構建之法提問
Ch04, P79, 每人在各自獨立設計、實現軟件的過程中不免要犯這樣那樣的錯誤。在結對編程中,因為有隨時的復審和交流,程序各方面質量取決於一對程序員中各方面水平較高的那位。這樣程序的錯誤就會少得多,程序的初始質量會高很多
問題:我們在第一次結對編程的debug階段中采用了這個方法,但是發現兩個人的交流有時候會掩蓋問題,來自代碼創作者的解釋會隱藏那些不易察覺的小bug,很多隱藏的比較深的bug還是在一個人獨立閱讀代碼的時候發現的,是因為結對編程不適用於debug階段嗎?
Ch6, P112, 另一個改進是,要在每一個任務中記載我們完成這個任務還需要多少時間。
Ch6, P115, 我們感覺好像項目完成了80%,殊不知后面的20%往往要花費80%的時間。
問題:敏捷流程的核心是基於能夠估計出任務的剩余時間的。但文中又說很多時候並估計不准時間。我感覺這里似乎有一些矛盾。如果預計完成時間估的不准,那么敏捷流程跟盡全力向前推進似乎沒有什么區別?還是說一般工程項目都能估計的大差不差?
Ch8, P156, 用戶在各種菜單中幽幽暗暗的反反復復的尋找某個功能,我們在單向玻璃后面替他着急……我們的界面距離“平平淡淡從從容容才是真”差太遠了
問題:想問一個和書關系不是那么大的問題。就是現在產品的菜單和圖標設計(比如word)依然很復雜,用戶很難知道自己要干什么事,就能根據菜單名稱大致找到地方。UI換了一版又一版,菜單設計卻沒有大的更新,是因為尾大不掉么?就是說為了和老版本兼容從而不能大面積修改菜單?
Ch16, P353, 但是絕大多數用戶都不會告訴公司顛覆性的需求,就像馬車夫那樣,他們會希望馬更快一些就好了。
問題:我認為這個例子並不能說明問題,馬車的出現和汽車的出現相差很遠,起碼遠超一個公司產品的周期。而且馬車直接變成汽車這個請求未免太顛覆性了。就像手機屏幕從按鍵變成觸控筆再變成手指直接觸控一樣,是因為用戶不斷反映體驗不好才促進了產品的升級的。用戶是很難知道未來的發展趨勢的,成功的公司重視用戶,應該推理出公司自身會去想顛覆性的方法滿足用戶的需求。而不是把沒做出顛覆性進展歸因於用戶沒有提出來,這可能對用戶提了過高的要求。
Ch16, P359 技術成熟度曲線
建議:除了標准的一升一降,老師是否可以分析下AI的三次上升和兩次泡沫破裂,這樣可能更加形象生動。