Re: [請益] 想從零開始轉行當AI軟體工程師
來用自己的例子勸退一些想跳機器學習的人
首先是數學程度,
我是數學系的,什麼線代,微積分,機率,統計的都很熟其實工作也會用到,
描述一些比較有印象的工作用過的數學,
比較有趣關於微積分的經驗:
老闆把問題用一個式子 exp(-rx)*((1/delta)*sqrt(A))*exp(-x^2/(A))來解釋,
並要對x積整個實數範圍。
在場大家都面面相覷我就被要求積了。
但這其實不難積,就高斯積分,有背整理一下秒解,
沒背也不難推。我大學微積分沒在背的所以是當場直接推,然後才繼續那場會議。
機率統計就那些常見的像是:
在一堆數據中給一些想法假設然後檢定,
或是想辦法對一直變動pattern的資料去建對應的機率模型。
但我具體數學程度到哪,舉兩個例子一個是深度學習WGAN一個是經典的random forest。
https://arxiv.org/pdf/1701.07875.pdf 這是WGAN。
https://link.springer.com/article/10.1023/A:1010933404324 這是RF。
基本上裡面的純數推導我幾乎都理解,
WGAN用到實分析跟線性規劃,
RF則是機率。
以上大概描述一下我的數學程度。
接著是我的電腦技能,
我熟悉的語言有C++跟PYTHON,基本上各有兩年以上的工作實務經驗。
python就絕大部份公司機器學習用的語言不解釋。
C++曾被公司要求所有演算法都要自己刻,這之中還包刮神經網路,
連 backpropagation 都要自己刻,
然後資料結構演算法,計算機組織,作業系統都讀過。
至於程度到哪我也不好說,我自知去參加程式比賽會被電死,但基本程度應該是有。
資料結構的程度至少是在刷題的時候不會卡在"天啊這個是什麼資料結構",
跟曾經在工作被要求刻了一個紅黑樹,雖然我現在忘了而且skip list太好用。
演算法就刷題的時候不會無止境一直設條件,
會嘗試用一些演算法想法比如 divide and conquer or dp 來解題。
計組作業系統就是那些什麼cpu pipeline 記憶體管理緩存設計都懂。
資料庫則是公司用什麼我就學什麼。
機器學習的部分就是幾乎現在大家喊得出名字的我都可以實作,
有要證明的模型我都可以證明,不過需要回憶準備一下哈哈因為模型太多沒全記。
大致用書來表示一下我懂得大概範圍好了。
https://www.deeplearningbook.org/
deep learning 的經典不解釋。
http://www.cs.cmu.edu/~tom/mlbook.html
machine learning 也算經典但很老的一本了。
https://www.tenlong.com.tw/products/9787302275954
各種經典的機器學習模型的推導書,雖然這個作者幾乎只是翻譯論文,但翻的還滿好的。
新技術太多我就不提了我都有在追。
以上大致描述一下我的程度,目前的結果是我近半年完全找不到工作XD
不管國內國外,丟履歷都沒回覆,基本上連面試機會都沒有。
搞得現在只能送foodpanda,
真的是能力不足阿...
希望這慘痛的經歷能拯救還想再跳AI的人阿。
==================================================
發現太多人執著實作的部分,其實要求手刻的只有一家公司,雖然我也在那邊做很久
除了那間公司其他的我也是用包啦,Tensorflow,cntk 之類的都會用。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.88.3 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1636524507.A.D68.html
※ 編輯: stmilk (223.137.88.3 臺灣), 11/10/2021 14:12:47
※ 編輯: stmilk (223.137.88.3 臺灣), 11/10/2021 14:23:19
→
11/10 14:18,
4年前
, 1F
11/10 14:18, 1F
推
11/10 14:21,
4年前
, 2F
11/10 14:21, 2F
推
11/10 14:23,
4年前
, 3F
11/10 14:23, 3F
問過獵頭獵頭說還行,所以我也不知道哈哈哈
推
11/10 14:29,
4年前
, 4F
11/10 14:29, 4F
→
11/10 14:29,
4年前
, 5F
11/10 14:29, 5F
對阿所以我現在在補 distribution system 的東西了哈哈哈看能不能去撈個資料庫相關的?
※ 編輯: stmilk (223.137.88.3 臺灣), 11/10/2021 14:31:53
推
11/10 14:38,
4年前
, 6F
11/10 14:38, 6F
對阿,更有趣的是其中一個人的同職務薪水還是我的三倍....
※ 編輯: stmilk (223.137.88.3 臺灣), 11/10/2021 14:42:43
推
11/10 14:51,
4年前
, 7F
11/10 14:51, 7F
想去國外,還有存款就辭了唸英文跟丟履歷,然後國外都沒回覆,
改丟國內的國內也都沒回覆,慘
※ 編輯: stmilk (223.137.88.3 臺灣), 11/10/2021 14:54:17
推
11/10 15:00,
4年前
, 8F
11/10 15:00, 8F
→
11/10 15:01,
4年前
, 9F
11/10 15:01, 9F
→
11/10 15:02,
4年前
, 10F
11/10 15:02, 10F
推
11/10 15:05,
4年前
, 11F
11/10 15:05, 11F
→
11/10 15:06,
4年前
, 12F
11/10 15:06, 12F
→
11/10 15:06,
4年前
, 13F
11/10 15:06, 13F
→
11/10 15:06,
4年前
, 14F
11/10 15:06, 14F
→
11/10 15:06,
4年前
, 15F
11/10 15:06, 15F
→
11/10 15:07,
4年前
, 16F
11/10 15:07, 16F
對阿,我最後一間就是被推薦去面試的,一面試就上了。但我之前自己丟根本也沒鳥我XD
→
11/10 15:07,
4年前
, 17F
11/10 15:07, 17F
你說的沒錯XD但是主要還是看你怎麼處理,再爛都有辦法處理,
爛的資料神經網路無法處理因為神經網路是強逼近,就垃圾進垃圾出
但數學反倒可以找到很好的方向,
比如說我處理過那種雜訊很多就算了,哪些是雜訊還都不知道的數據。
方法就把資料換個方便我弄成隨機過程的樣子,
然後抽特徵的時候隨機,根據大數法則我可以期待他會逼近一個我要的值,
且也可以淡化雜訊的影響畢竟是隨機取,最終效果很好這樣
※ 編輯: stmilk (223.137.88.3 臺灣), 11/10/2021 15:16:24
推
11/10 15:09,
4年前
, 18F
11/10 15:09, 18F
→
11/10 15:11,
4年前
, 19F
11/10 15:11, 19F
我怎麼知道XD 是公司要求阿
→
11/10 15:12,
4年前
, 20F
11/10 15:12, 20F
→
11/10 15:12,
4年前
, 21F
11/10 15:12, 21F
→
11/10 15:14,
4年前
, 22F
11/10 15:14, 22F
其實我不想跟你爭辯這個啦....
我只是想表示這麼基本的東西我都有公司也是不要阿
真的要說的話不然你試著準備一下那個WGAN的中為什麼Wasserstein比原本的GAN的cost function 還要好的證明然後試試?
→
11/10 15:17,
4年前
, 23F
11/10 15:17, 23F
※ 編輯: stmilk (223.137.88.3 臺灣), 11/10/2021 15:22:36
→
11/10 15:18,
4年前
, 24F
11/10 15:18, 24F
→
11/10 15:18,
4年前
, 25F
11/10 15:18, 25F
→
11/10 15:20,
4年前
, 26F
11/10 15:20, 26F
→
11/10 15:20,
4年前
, 27F
11/10 15:20, 27F
→
11/10 15:20,
4年前
, 28F
11/10 15:20, 28F
→
11/10 15:20,
4年前
, 29F
11/10 15:20, 29F
→
11/10 15:21,
4年前
, 30F
11/10 15:21, 30F
還有 93 則推文
還有 15 段內文
推
11/11 00:51,
4年前
, 124F
11/11 00:51, 124F
→
11/11 00:51,
4年前
, 125F
11/11 00:51, 125F
→
11/11 00:52,
4年前
, 126F
11/11 00:52, 126F
→
11/11 00:53,
4年前
, 127F
11/11 00:53, 127F
→
11/11 00:54,
4年前
, 128F
11/11 00:54, 128F
→
11/11 00:55,
4年前
, 129F
11/11 00:55, 129F
→
11/11 00:55,
4年前
, 130F
11/11 00:55, 130F
我好不容易等到一個人願意討論一下技術但不知為啥他刪掉了=_=但我都打完了就貼一下哈哈哈,順便回答你的問題。我之前碰到的問題,就是因為有論文證明該問題處,我才沒在多花時間在那個模型上,我是還沒辦法做到那種程度的證明啦,但還是有能力做一些證明,這些證明也讓我跟老闆溝通順暢些沒在做些我認為的偏路,然後我同意你說的,更多時候就是抽象化簡化問題就是。以下是我剛回覆的技術部份。
當時我處理的影像超稀疏的。gan難train是在那個模型非常
容易被一個函數分開,也就是可以找到完美的discriminato
r,這是這兩個機率support的問題,而且條件還不用是這兩
個support不相交,只要幾乎處處不相交就可以,這個至少廣
大的實驗告訴我們非常容易發生。所以本質上只要是那個co
st function,初始值不好不管做甚麼調整丟什麼模型進去都
會遇到這個問題。然後可能是我的處理的影像真的太稀疏,
應該是可以理解成這個pattern的support超小,基本上根本
train不起來。所以我那時的想法是就是想要一個理論上直接
可行的結果。這樣我不用把模型弄得巨爆幹複雜,設計一堆
有的沒的只為了能先train,與其想辦法各種嘗試引導訓練,
抽象地說就是想辦法找一個先驗讓兩個pattern的support能
重合。不如直接一個理論可行的再去處理wgan模型的問題,因
為比較具體有方向。順便說之前的別組也是各種花式加self
-attention在decoder和encoder中也是沒用,至於原因因為
不是我做的我沒去也不想去深思,或許也可以就是~可能有錯
,多包涵啦。
→
11/11 01:14,
4年前
, 131F
11/11 01:14, 131F
※ 編輯: stmilk (223.137.88.3 臺灣), 11/11/2021 01:46:54
※ 編輯: stmilk (223.137.88.3 臺灣), 11/11/2021 01:56:19
推
11/11 04:43,
4年前
, 132F
11/11 04:43, 132F
→
11/11 04:47,
4年前
, 133F
11/11 04:47, 133F
→
11/11 04:48,
4年前
, 134F
11/11 04:48, 134F
→
11/11 04:50,
4年前
, 135F
11/11 04:50, 135F
→
11/11 05:14,
4年前
, 136F
11/11 05:14, 136F
→
11/11 05:15,
4年前
, 137F
11/11 05:15, 137F
推
11/11 05:19,
4年前
, 138F
11/11 05:19, 138F
推
11/11 17:41,
4年前
, 139F
11/11 17:41, 139F
推
11/11 20:34,
4年前
, 140F
11/11 20:34, 140F
→
11/11 20:34,
4年前
, 141F
11/11 20:34, 141F
→
11/11 20:34,
4年前
, 142F
11/11 20:34, 142F
→
11/11 20:34,
4年前
, 143F
11/11 20:34, 143F
其實都差不多吧,看狀況用不同的方式去做增加或減少而已
我稍微想到可能比較有創意(?)你可以嘗試的方法。
從sample的特徵下手,而且我會傾向不用up sample因為我不喜歡人工數據XD。
雜訊很多的情況就上面有提到,從sample中隨機取特徵,然後創個新sample。
但因為我的問題是哪些是雜訊也不知道,
所以這樣的好處是資料都是是自然環境產生的,
我不用去考慮這樣取是不是會有bias,反正隨機數拉高一定會逼近我要的樣子。
注意如果特徵彼此之間獨立性高,這樣做會有問題,
依我的經驗我還想不到哪些可能的題目可以用這個XD
然後是特徵少且彼此獨立性高且樣本數也很少的話,
這種的就麻煩因為你的資訊本來就少,大概只能用加雜訊的方式去up sample了,
然後是特徵少且獨立性高然後樣本高,那這樣我會採down sample,
我現在直觀想到就 greedy 地去做。
先根據你的問題,觀察哪個特徵最重要(簡單的方法就隨機森林),
從這個特徵來看聚的狀況,但注意這個聚集狀況可以用不同的方式來定義,
就是用不一樣的距離公式來嘗試,
把這個群體中sample數偏高的類別刪掉一些,
基本假設就是因為這個特徵影響大,
那又特別多的sample聚集在一起的東西可能影響會太大有bias
同樣地你可以反過來從不重要的特徵下手去砍,這樣對整個資料的影響會最小
然後反過來特徵多且獨立性高樣本數多,因為這種狀況可能會有為度災難的可能
所以會特徵一起砍
觀察不重要的特徵的聚的狀況,
直接砍掉這個特徵,並砍掉不平衡的那個地方,然後一直持續到樣本平衡
特徵多且獨立性高樣本少,其實會發現樣本少就是麻煩,
所以我一樣會砍最沒影響往上的特徵,然後觀察從最重要往下的特徵的群,
去砍裏面不平衡的那方
不過樣本數少可能會有問題,我應該還是傾向up sample就是
然後我現在想的到的終極狀況之一是特徵沒有特別的群聚現象,
因為這個太抽象可能個別問題有不同的方法XD
在目前抽象的假設下我只能建議加雜訊 up sample
或是隨機去 down sample
以上你參考一下,但畢竟我不知道你做的題目,
所以我盡量先考慮比較一般只考慮抽象特徵的情況了
但對某些特定題目不一定可行你要小心使用哈哈
最後我上面除了雜訊那個都假設獨立性高,這個可以很簡單地用PCA達成,
所以如果你想要維持原本的特徵,不用獨立性高的假設其實應該差別也不大
對不起我昨天其實滿累得沒注意到你應該就是問樣本數很少還稀疏的情況,
樣本數少的時候方法想得很混。
如果樣本數少,並假設超級極端狀況99%比1%。
一樣觀察特徵附近(注意這個"附近"一樣是根據你的距離定義,根據不同問題是用的距離定義),
因為資訊實在太少,基本只能假設這個樣本附近可能會有同樣的標注。
所以從附近去生成樣本,
如果這個某個標注還在另外一個標注的某個聚落附近,你也可以考慮降低這個聚落的影響,
就是在這個聚落去砍掉多數的樣本。
其實概念上都差不多,就是根據你的問題,看有沒有某些前提資訊可用,然後去resample。
根據你的問題,這個特徵的選法就不同,探討聚落的方式也不同(像是KNN,T-SNE)。
若是你用的是隨機森林的方法,你甚至可以考慮把這個算法啟發化。
其他的方式想啟發化也不是不行,但是就是沒有tree model這麼乾淨俐落就是
以上就是我目前想的到的處理方法哈哈
※ 編輯: stmilk (223.137.88.3 臺灣), 11/11/2021 21:46:44
※ 編輯: stmilk (223.137.88.3 臺灣), 11/11/2021 21:58:18
推
11/11 22:44,
4年前
, 144F
11/11 22:44, 144F
→
11/11 22:44,
4年前
, 145F
11/11 22:44, 145F
→
11/11 22:45,
4年前
, 146F
11/11 22:45, 146F
→
11/11 22:46,
4年前
, 147F
11/11 22:46, 147F
推
11/12 00:36,
4年前
, 148F
11/12 00:36, 148F
→
11/12 00:36,
4年前
, 149F
11/12 00:36, 149F
→
11/12 00:41,
4年前
, 150F
11/12 00:41, 150F
推
11/12 08:12,
4年前
, 151F
11/12 08:12, 151F
※ 編輯: stmilk (223.137.88.3 臺灣), 11/12/2021 12:25:17
※ 編輯: stmilk (223.137.88.3 臺灣), 11/12/2021 12:27:45
推
11/12 21:41,
4年前
, 152F
11/12 21:41, 152F
希望能有給你一些想法啦哈哈
推
11/13 01:55,
4年前
, 153F
11/13 01:55, 153F
→
11/13 01:56,
4年前
, 154F
11/13 01:56, 154F
→
11/13 15:11,
4年前
, 155F
11/13 15:11, 155F
→
11/13 15:11,
4年前
, 156F
11/13 15:11, 156F
→
11/13 15:12,
4年前
, 157F
11/13 15:12, 157F
※ 編輯: stmilk (223.137.88.3 臺灣), 11/13/2021 15:17:46
討論串 (同標題文章)
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章