我目前在梯度下降實現問題上掙扎,更多的是在數學方面。我有一個輸入值的矩陣,例如 - [[1,1,0,2],[2,3,5,1],[2,1,8,0]]
。我想計算權重,將對輸出向量的誤差最小化,最小化的函數是標準線性模型,所以我的假設是最小化 - >np.dot(input,weights)-y
。問題是 - 權向量的值應該加上特定的數字,比如說2.也輸出向量的歸一化,如np.dot(input,weights)/sum(np.dot(input,weights))
- 然後將這個結果與期望的輸出向量進行比較。我應該如何在python/numpy中定義這個任務?人類調諧過程的一般優化 - python中的實現
示例:期望
1)輸入矩陣 [[4,0,2,0,2,0],[2,0,0,2,2,0],[2,0,0,2,2,0],[4,0,2,0,0,0],[0,0,2,0,0,2],[0,4,0,0,0,2],[0,2,0,0,0,2],[0,2,2,0,0,0],[0,0,2,0,0,2],[4,0,2,0,0,0]]
2)輸出[12.94275893,8.07054252,9.281123898,10.53654162,8.698251382,14.67643103,7.158870124,10.26752354,8.324615155,10.0433418]
3)變換以這樣的方式,np.dot輸入矢量的權重(輸入,權重)/總和(np.dot(輸入,權重))沒問題 [11,21,18,0,20,14]
- 總和固定爲84
4)最終產出,合理偏差泰德2)[15.15,7.83,7.83,10.10,8.08,14.14,8.84,9.85,8.08,10.10]
我不清楚你在問什麼。 '''問題是 - 權重向量的值應該加上具體的數字,比如說2'''這是什麼意思?爲什麼正常化很重要?通常你正在適應一個規範器,然後準備好轉換新的數據。另外:這是爲了研究/學習目的嗎?因爲有很多好的軟件爲你做這件事。 – sascha
我的意思是我的權重是固定在他們的總和 - 這些值的總和應該是2. – tretyacv
這聽起來像一個** np-hard **問題,然後這是不可能解決一般!它也不再是一個凸優化問題。當然,你可以得到一個近似的解決方案,並添加一個懲罰項,這個懲罰項對於這個值的偏差是有效的。但好吧..仍然是非凸的,我認爲(這將意味着:非常難以優化)。 **編輯:**也許我的感覺錯了。如果使用罰款期限,它應該是凸的。 – sascha