【機器學習】梯度下降原理

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlinef = lambda x :(x-3)**2+2.5*x-7.5
f2 = lambda x :-(x-3)**2+2.5*x-7.5

求解導數 導數為0 取最小值

x = np.linspace(-2,5,100)
y = f(x)
plt.plot(x,y)

在這里插入圖片描述

梯度下降求最小值

#導數函數
d = lambda x:2*(x-3)*1+2.5#學習率 需調節 每次改變數值的時候,改變多少
learning_rate = 0.1min_value = np.random.randint(-3,5,size =1)[0]
print('-'*30,min_value)
#記錄數據更新了,原來的值,上一步的值
min_value_last = min_value+0.1#tollerence容忍度,誤差,在萬分之一,任務結束
tol = 0.0001
count = 0
while True:if np.abs(min_value - min_value_last)<tol:break
#梯度下降min_value_last = min_value
#更新值min_value = min_value - learning_rate*d(min_value)print("++++++++++%d"%count,min_value)count+=1
print("*"*30,min_value)

------------------------------ -2
++++++++++0 -1.25
++++++++++1 -0.6499999999999999
++++++++++2 -0.16999999999999993
++++++++++3 0.21400000000000008
++++++++++4 0.5212000000000001
++++++++++5 0.7669600000000001
++++++++++6 0.9635680000000001
++++++++++7 1.1208544
++++++++++8 1.24668352
++++++++++9 1.347346816
++++++++++10 1.4278774528
++++++++++11 1.49230196224
++++++++++12 1.543841569792
++++++++++13 1.5850732558336
++++++++++14 1.6180586046668801
++++++++++15 1.644446883733504
++++++++++16 1.6655575069868032
++++++++++17 1.6824460055894426
++++++++++18 1.695956804471554
++++++++++19 1.7067654435772432
++++++++++20 1.7154123548617946
++++++++++21 1.7223298838894356
++++++++++22 1.7278639071115485
++++++++++23 1.7322911256892388
++++++++++24 1.735832900551391
++++++++++25 1.7386663204411128
++++++++++26 1.7409330563528902
++++++++++27 1.7427464450823122
++++++++++28 1.7441971560658498
++++++++++29 1.74535772485268
++++++++++30 1.7462861798821439
++++++++++31 1.7470289439057152
++++++++++32 1.7476231551245722
++++++++++33 1.7480985240996578
++++++++++34 1.7484788192797263
++++++++++35 1.748783055423781
++++++++++36 1.7490264443390249
++++++++++37 1.7492211554712198
++++++++++38 1.749376924376976
++++++++++39 1.7495015395015807
++++++++++40 1.7496012316012646
****************************** 1.7496012316012646

更新值learning_rate*d(max_value) 最大/最小值導數為0
就可能滿足np.abs(max_value - max_value_last)<precision:
d2 = lambda x:-2*(x-3)*1+2.5
#學習率 需調節 每次改變數值的時候,改變多少
learning_rate = 0.1
max_value = np.random.randint(-3,5,size =1)[0]
print('-'*30,min_value)
#記錄數據更新了,原來的值,上一步的值
max_value_last = max_value+0.1
result =[]
#tollerence容忍度,誤差,在萬分之一,任務結束
#precision精確度, 誤差,在萬分之一,任務結束
precision = 0.0001
count = 0
while True:if count>3000:
#         避免梯度消失 rate =1
#        避免梯度爆炸 導數更新值有問題時  或 rate =10breakif np.abs(max_value - max_value_last)<precision:break
#梯度下降max_value_last = max_value#更新值learning_rate*d(max_value) 最大/最小值導數為0 
# 就可能滿足np.abs(max_value - max_value_last)<precision:max_value = max_value + learning_rate*d2(max_value)result.append(max_value)print("++++++++++%d"%count,max_value)count+=1
print("*"*30,max_value)

------------------------------ 1.7496012316012646
++++++++++0 0.050000000000000044
++++++++++1 0.8900000000000001
++++++++++2 1.5620000000000003
++++++++++3 2.0996
++++++++++4 2.52968
++++++++++5 2.873744
++++++++++6 3.1489952
++++++++++7 3.36919616
++++++++++8 3.545356928
++++++++++9 3.6862855424
++++++++++10 3.79902843392
++++++++++11 3.889222747136
++++++++++12 3.9613781977088
++++++++++13 4.01910255816704
++++++++++14 4.065282046533632
++++++++++15 4.102225637226906
++++++++++16 4.131780509781525
++++++++++17 4.15542440782522
++++++++++18 4.174339526260176
++++++++++19 4.18947162100814
++++++++++20 4.201577296806512
++++++++++21 4.2112618374452095
++++++++++22 4.219009469956168
++++++++++23 4.225207575964935
++++++++++24 4.230166060771948
++++++++++25 4.234132848617558
++++++++++26 4.237306278894047
++++++++++27 4.239845023115238
++++++++++28 4.24187601849219
++++++++++29 4.2435008147937525
++++++++++30 4.244800651835002
++++++++++31 4.2458405214680015
++++++++++32 4.246672417174401
++++++++++33 4.247337933739521
++++++++++34 4.247870346991617
++++++++++35 4.248296277593293
++++++++++36 4.248637022074634
++++++++++37 4.248909617659708
++++++++++38 4.2491276941277665
++++++++++39 4.249302155302213
++++++++++40 4.249441724241771
++++++++++41 4.249553379393417
++++++++++42 4.249642703514733
****************************** 4.249642703514733

ret = ret= ret*stepx = np.linspace(0,6,100)
y = f2(x)
plt.plot(x,y)result = np.asanyarray(result)
plt.plot(result,f2(result),'*')

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456129.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456129.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456129.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言的面向對象設計-對X264/FFMPEG架構探討

本文貢獻給ZSVC開源社區&#xff08;https://sourceforge.net/projects/zsvc/&#xff09;&#xff0c;他們是來自于中國各高校的年輕學子&#xff0c;是滿懷激情與夢想的人&#xff0c;他們將用自己的勤勞與智慧在世界開源軟件領域為中國留下腳步&#xff0c;該社區提供大量視…

linux gtest安裝

1. 安裝cmake, 具體步驟這里不詳說。 2. 下載源碼&#xff1a;https://codeload.github.com/google/googletest/zip/release-1.8.0 3. 解壓源碼&#xff1a;unzip googletest-release-1.8.0.zip 4. 進入源碼目錄&#xff1a;cd googletest-release-1.8.0 5. 創建并進入目錄buil…

基于物聯網的智能垃圾桶設計

前言 目前我國各城市包括首都正在深入開展爭創國家衛生城市活動&#xff0c;這是全國愛國衛生運動委員會辦公室評選命名的國家級衛生優秀城市的最高榮譽&#xff0c;是一個城市綜合素質的重要標志。沈陽市正在深入開展創建國家衛生城市和建設國家健康城市(以下簡稱“雙城雙創”…

學習實踐 - 收藏集 - 掘金

2道面試題&#xff1a;輸入URL按回車&HTTP2 - 掘金通過幾輪面試&#xff0c;我發現真正那種問答的技術面&#xff0c;寫一堆項目真不如去刷技術文章作用大&#xff0c;因此刷了一段時間的博客和掘金&#xff0c;整理下曾經被問到的2道面試題 從瀏覽器輸入URL按回車到頁面顯…

【機器學習】自己手寫實現線性回歸,梯度下降 原理

導包 import numpy as npimport matplotlib.pyplot as plt %matplotlib inlinefrom sklearn.linear_model import LinearRegression創建數據 X np.linspace(2,10,20).reshape(-1,1)# f(x) wx b y np.random.randint(1,6,size 1)*X np.random.randint(-5,5,size 1)# 噪…

跨站的藝術-XSS Fuzzing 的技巧

作者 | 張祖優(Fooying) 騰訊云 云鼎實驗室 對于XSS的漏洞挖掘過程&#xff0c;其實就是一個使用Payload不斷測試和調整再測試的過程&#xff0c;這個過程我們把它叫做Fuzzing&#xff1b;同樣是Fuzzing&#xff0c;有些人挖洞比較高效&#xff0c;有些人卻不那么容易挖出漏洞…

H.264/AVC視頻壓縮編碼標準的新進展

H .264/AVC是由ISO/IEC與ITU-T組成的聯合視頻組(JVT)制定的新一代視頻壓縮編碼標準&#xff0c;于2003年5月完成制訂。相對于先前的標準&#xff0c;H.264/AVC無論在壓縮效率、還是在網絡適應性方面都有明顯的提高&#xff0c;因此&#xff0c;業界普遍預測其將在未來的視頻應用…

python注釋及語句分類

注釋 注釋就是&#xff1a;注解&#xff0c;解釋。 主要用于在代碼中給代碼標識出相關的文字提示(提高代碼的可讀性) 或 調試程序。Python中注釋分為兩類&#xff1a; 1.單行注釋 &#xff1a; 單行注釋以 # 號開頭&#xff0c;在當前行內&#xff0c;# 號后面的內容就是注釋…

【機器學習】回歸誤差:MSE、RMSE、MAE、R2、Adjusted R2 +方差、協方差、標準差(標準偏差/均方差)、均方誤差、均方根誤差(標準誤差)、均方根解釋

我們通常采用MSE、RMSE、MAE、R2來評價回歸預測算法。 1、均方誤差&#xff1a;MSE&#xff08;Mean Squared Error&#xff09; 其中&#xff0c;為測試集上真實值-預測值。 def rms(y_test, y): return sp.mean((y_test - y) ** 2) 2、均方根誤差&#xff1a;RMSE&#xff…

大院大所合作對接會7天倒計時!亮點搶先看

為什么80%的碼農都做不了架構師&#xff1f;>>> 推動產業特色發展&#xff0c;提升企業自主創新能力&#xff0c;加快成果轉化落地&#xff0c;繼江蘇發展大會之后&#xff0c;圍繞“聚力創新”&#xff0c;7月5日-6日&#xff0c;中國江蘇大院大所合作對接會暨第六…

通過取父級for循環的i來理解閉包,iife,匿名函數

在使用for循環的時候&#xff0c;假如需要在循環體中添加一個匿名函數處理其他的事情&#xff0c;那么&#xff0c;在這個匿名函數內&#xff0c;如果需要用到對應的i&#xff0c;因為閉包的緣故&#xff0c;循環體循環結束后才返回i&#xff0c;所以i最終為最后一次的數值。閉…

H.264將普及 視頻編碼講壇之H.264前世今生

隨著HDTV等高清資源的興起&#xff0c;H.264這個規范頻頻出現在我們眼前&#xff0c;HD-DVD和藍光DVD均計劃采用這一標準進行節目制作。而且自2005年下半年以來&#xff0c;無論是NVIDIA還是ATI都把支持H.264硬件解碼加速作為自己最值得夸耀的視頻技術。而數碼播放器領域也吹來…

python命令方式和關鍵字

常用命名方式 不管是文件&#xff0c;變量&#xff0c;函數或類名等等&#xff0c;命名都要遵守一個基本規范&#xff0c;就是&#xff0c;命名要有意義&#xff0c;易讀易懂。因此&#xff0c;兩種主流的命名方式出現了&#xff0c;他們分別是駝峰命名方法 和 使用下劃線分隔…

【機器學習】嶺回歸

import numpy as npimport matplotlib.pyplot as plt %matplotlib inlinefrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_error,r2_score from sklearn import datasets# CV crosss validation &#xff1a;交叉驗證 from skl…

P1057 傳球游戲

題目描述 上體育課的時候&#xff0c;小蠻的老師經常帶著同學們一起做游戲。這次&#xff0c;老師帶著同學們一起做傳球游戲。 游戲規則是這樣的&#xff1a;n個同學站成一個圓圈&#xff0c;其中的一個同學手里拿著一個球&#xff0c;當老師吹哨子時開始傳球&#xff0c;每個同…

Keepalived 添加腳本配置監控haproxy方案

作者&#xff1a;風過無痕-唐出處&#xff1a;http://www.cnblogs.com/tangyanbo/ 上一篇文章已經講到了keepalived實現雙機熱備&#xff0c;且遺留了一個問題 master的網絡不通的時候&#xff0c;可以立即切換到slave&#xff0c;但是如果只是master上的應用出現問題的時候&am…

H.264編解碼標準的核心技術(提供相關流程圖)

最近在學習H.264編解碼知識&#xff0c;上網搜了不少資料看&#xff0c;發現大多數中文資料中都缺少相應的圖片&#xff0c;例如編解碼流程圖、編碼模板等&#xff0c;這對加深理解是很有幫助 的。木有辦法&#xff0c;只好回去潛心閱讀《H.264_MPEG-4_Part_10_White_Paper》&a…

【機器學習】總結:線性回歸求解中梯度下降法與最小二乘法的比較

在線性回歸算法求解中&#xff0c;常用的是最小二乘法與梯度下降法&#xff0c;其中梯度下降法是最小二乘法求解方法的優化&#xff0c;但這并不說明梯度下降法好于最小二乘法&#xff0c;實際應用過程中&#xff0c;二者各有特點&#xff0c;需結合實際案例具體分析。 最后有…

struts2學習(3)struts2核心知識II

一、struts.xml配置&#xff1a;                                                   1.分模塊配置方法&#xff1a; 比如某個系統多個模塊&#xff0c;我們把資產管理模塊和車輛管理模塊&#xff0c;分開&#xff0c;在總…

【機器學習】邏輯斯蒂回歸概率計算和手動計算對比

二分類&#xff0c;邏輯斯蒂回歸概率計算 import numpy as np from sklearn import datasets from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_splitX,y datasets.load_iris(True)cond y!2X X[cond] y y[cond]resul…