日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

优达学城《DeepLearning》1-1:神经网络概论

發(fā)布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 优达学城《DeepLearning》1-1:神经网络概论 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本次目標

使用邏輯回歸分類器,實現(xiàn)一個線性二分類器。

問題的分析

data.csv文件形式如下,共80個點,0和1兩類。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pddata = pd.read_csv('data.csv', header=None)
X = np.array(data[[0,1]])
y = np.array(data[2])
plot_points(X,y)
plt.show()

結(jié)果:

技術介紹1:邏輯回歸

查閱了很多資料,目前難以從頭到尾的講清楚邏輯回歸的所有內(nèi)容和前因后果,大概是知道了,但疑問很多,第二輪時再來看這個問題。

  1. 機器學習算法之邏輯回歸https://www.biaodianfu.com/logistic-regression.html

?

技術介紹2:梯度下降算法

“梯度”概述

梯度(矢量)是微積分中的一個概念:

  • 在單變量的函數(shù)中,梯度其實就是函數(shù)的導數(shù)(帶方向),代表著函數(shù)在某個給定點的切線的斜率
  • 在多變量函數(shù)中,梯度是一個向量,向量有方向,梯度的方向就指出了函數(shù)在給定點的上升最快的方向。梯度是偏導數(shù)(標量)的矢量和。

看待微分的意義,可以有不同的角度:

  1. 函數(shù)某點切線的斜率
  2. 函數(shù)的變化率

單變量微分例子:

多變量微分例子:

求多變量梯度的例子:

我們可以看到,梯度就是分別對每個變量進行微分,然后用逗號分割開,梯度是用<>包括起來,說明梯度其實一個向量。

梯度下降法簡述

梯度下降它的主要目的和實現(xiàn)方法是:沿著目標函數(shù)梯度的方向更新參數(shù)值,通過迭代以期望達到到目標函數(shù)的最小值(或最大值)。

在機器學習中,常見的有:隨機梯度下降法和批量梯度下降法。

梯度下降算法的數(shù)學表達

下面我們就開始從數(shù)學上解釋梯度下降算法的計算過程和思想!

此公式的意義是:J是關于Θ的一個函數(shù),我們當前位置在Θ0點,要從這個點走到J的最小值點,也就是山底。首先我們先確定前進的方向,也就是梯度的反向,然后走一段距離的步長,也就是α,走完這個段步長,就到達了Θ1這個點!

下面就這個公式的幾個常見的疑問:

  • α的含義:
    • 學習率或者步長。α不能太大也不能太小,太小導致遲遲走不到最低點,太大導致無法收斂或錯過最低點!
  • 為什么用減法而不是加法?
    • 梯度前加一個負號,就意味著朝著梯度相反的方向前進!我們需要朝著下降最快的方向走,自然就是負的梯度的方向,所以此處需要加上負號。

單變量函數(shù)的梯度下降

假設有如下單變量函數(shù),我們利用梯度下降法,試圖找到一個參數(shù)θ的最佳值,使得損失函數(shù)J(θ)的值最小

?

函數(shù)的微分:

初始化,起點為:

? ?(注意這里0不是次方,而是序號意思。即先設定單變量θ的初始值為2,至于函數(shù)值為多少需要去計算。

學習率為:

根據(jù)梯度下降的計算公式:

我們開始進行梯度下降的迭代計算過程:

可視化收斂過程如下:

局部放大圖:

從可視化中可看出,梯度下降法在趨近函數(shù)最小值(1, -1)點,那個點位的單變量值為1。

首先本案例函數(shù)是我自己設計并可視化后選定的,我在動手計算時,發(fā)現(xiàn)學習率對梯度下降太敏感了,本來設定的學習率為0.4,但一下就跑到左邊曲線很遠地方去了,0.1也會跑到左邊去,最終發(fā)現(xiàn)0.05對于這個函數(shù)而言是比較好的學習率。所以說,花點時間親自動手,對算法的理解還是會生動的多。

多變量函數(shù)的梯度下降

我們假設有一個損失函數(shù):

現(xiàn)在要通過梯度下降法計算這個函數(shù)的最小值。我們通過觀察就能發(fā)現(xiàn)最小值其實就是 (0,0)點。但是接下來,我們會從梯度下降算法開始一步步計算到這個最小值!

我們假設初始的起點為:

初始的學習率為:

函數(shù)的梯度為:

進行多次迭代:

我們發(fā)現(xiàn),已經(jīng)基本靠近函數(shù)的最小值點:

從上面能看出,多變量的函數(shù)梯度下降和單變量沒有本質(zhì)區(qū)別,計算的時候各變量基本是隔離的,有點像矩陣計算。

邏輯回歸+梯度下降法在本項目中應用

1 sigmoid激勵函數(shù)

2 輸出公式

3 損失函數(shù)

其中 y 是真值標簽值,y^是預測標簽值。

4 更新權(quán)值的函數(shù)

代碼和輸出

import matplotlib.pyplot as plt
import numpy as np
import pandas as pddef plot_points(X, y):admitted = X[np.argwhere(y==1)]rejected = X[np.argwhere(y==0)]plt.scatter([s[0][0] for s in rejected], [s[0][1] for s in rejected], s = 25, color = 'blue', edgecolor = 'k')plt.scatter([s[0][0] for s in admitted], [s[0][1] for s in admitted], s = 25, color = 'red', edgecolor = 'k')def display(m, b, color='g--'):plt.xlim(-0.05,1.05)plt.ylim(-0.05,1.05)x = np.arange(-10, 10, 0.1)plt.plot(x, m*x+b, color)# Activation (sigmoid) function
def sigmoid(x):return 1 / (1 + np.exp(-x))# Output (prediction) formula
def output_formula(features, weights, bias):return sigmoid(np.dot(features, weights) + bias)# Error (log-loss) formula
def error_formula(y, output):return - y*np.log(output) - (1 - y) * np.log(1-output)# Gradient descent step
def update_weights(x, y, weights, bias, learnrate):output = output_formula(x, weights, bias)d_error = y - outputweights += learnrate * d_error * xbias += learnrate * d_errorreturn weights, biasdef train(features, targets, epochs, learnrate, graph_lines=False):# 初始化errors = []n_records, n_features = features.shapelast_loss = Noneweights = np.random.normal(scale=1 / n_features**.5, size=n_features)bias = 0for e in range(epochs):del_w = np.zeros(weights.shape)#開始一個epoch的梯度下降計算for x, y in zip(features, targets): #zip:逐個元素打包成元組。weights, bias = update_weights(x, y, weights, bias, learnrate)# Printing out the log-loss error on the training setout = output_formula(features, weights, bias)loss = np.mean(error_formula(targets, out))errors.append(loss)if e % (epochs / 10) == 0: #無論多少epoch,都只打印10次結(jié)果print("\n========== Epoch", e,"==========")if last_loss and last_loss < loss:print("Train loss: ", loss, "  WARNING - Loss Increasing")else:print("Train loss: ", loss)last_loss = loss# e.g. 0.95 --> True (= 1), 0.31 --> False (= 0)predictions = out > 0.5# print(out)# print(targets)accuracy = np.mean(predictions == targets)#相等為1,不相等為0,均值就是精度。print("Accuracy: ", accuracy)if graph_lines and e % (epochs / 100) == 0: #每個epoch繪制一次‘分割線’display(-weights[0]/weights[1], -bias/weights[1])# 繪制預測效果圖plt.title("Solution boundary")display(-weights[0]/weights[1], -bias/weights[1], 'black') # 繪制最終的分割線plot_points(features, targets)# 繪制所有樣本點plt.show()# 繪制loss曲線plt.title("Error Plot")plt.xlabel('Number of epochs')plt.ylabel('Error')plt.plot(errors)plt.show()"""
X:point坐標集
y:標簽集(0或1)
"""
data = pd.read_csv('data.csv', header=None)
X = np.array(data[[0,1]])
y = np.array(data[2])np.random.seed(44)
epochs = 100
learnrate = 0.01
train(X, y, epochs, learnrate, True)

?

========== Epoch 0 ==========
Train loss:  0.7135845195381634
Accuracy:  0.4========== Epoch 10 ==========
Train loss:  0.6225835210454962
Accuracy:  0.59========== Epoch 20 ==========
Train loss:  0.5548744083669508
Accuracy:  0.74========== Epoch 30 ==========
Train loss:  0.501606141872473
Accuracy:  0.84========== Epoch 40 ==========
Train loss:  0.4593334641861401
Accuracy:  0.86========== Epoch 50 ==========
Train loss:  0.42525543433469976
Accuracy:  0.93========== Epoch 60 ==========
Train loss:  0.3973461571671399
Accuracy:  0.93========== Epoch 70 ==========
Train loss:  0.3741469765239074
Accuracy:  0.93========== Epoch 80 ==========
Train loss:  0.35459973368161973
Accuracy:  0.94========== Epoch 90 ==========
Train loss:  0.3379273658879921
Accuracy:  0.94

?

總結(jié)

學習如何編碼實現(xiàn)梯度下降算法,并且在一個小數(shù)據(jù)集上應用。

即:使用梯度下降算法,找到一條直線,使之能最大程度的分隔兩類數(shù)據(jù)點。

?

參考:

  1. 梯度下降法和反向傳播算法是什么關系?https://www.zhihu.com/question/311616761/answer/608618557
  2. ★★深入淺出--梯度下降法及其實現(xiàn)https://www.jianshu.com/p/c7e642877b0e
  3. ★多元函數(shù)的偏導數(shù)、方向?qū)?shù)、梯度以及微分之間的關系思考https://zhuanlan.zhihu.com/p/31942912

  4. 邏輯回歸和神經(jīng)網(wǎng)絡之間有什么關系?https://blog.csdn.net/tz_zs/article/details/79069499

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的优达学城《DeepLearning》1-1:神经网络概论的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 最新日本中文字幕 | 国产成人精品一区二区无码呦 | 亚洲调教欧美在线 | 91黄色小网站 | 波多野结衣一区二区三区 | 亚洲天堂va| 在线观看视频一区二区三区 | 亚洲免费一区二区 | 五月婷婷综合激情 | 男女互操在线观看 | 啪啪网站免费观看 | 人人爱超碰| 波多野结衣一区二区三区高清av | 污污视频在线免费观看 | 日韩欧美一区二区在线观看 | 天堂视频一区 | 射婷婷| 三年中文在线观看免费观看 | 国产免费91视频 | 精品在线视频免费观看 | 四季av国产一区二区三区 | 一区免费在线 | 我要看一级黄色片 | 国产免费一区二区三区视频 | 国产乱叫456在线 | h视频在线观看网站 | 成片在线观看 | 想要xx在线观看 | 天天操天天插 | 色七七久久| 在线观看av国产一区二区 | 国产免费黄色网址 | 天堂色区 | 最近国语视频在线观看免费播放 | 久久精品片| 九九热国产在线 | 九九精品视频免费 | 欧美一区二区三区公司 | 久久久国产精华液 | 婷婷九月丁香 | 91精品一区二区三 | 国产欧美一区二区视频 | 香蕉一区二区 | 国模无码国产精品视频 | 日韩欧美三级在线 | 国产精品国产三级国产aⅴ浪潮 | 成人综合社区 | 久久久久久国产精品免费播放 | 亚洲精品国产精品国自产 | 国产精品色在线网站 | 日本99视频 | 少妇av一区二区 | 激情天天| 国产精品免费视频一区二区三区 | 国内精久久久久久久久久人 | av无码久久久久久不卡网站 | bbbbbxxxxx性欧美| av在线浏览 | 2019中文字幕在线免费观看 | 美女脱光衣服让男人捅 | 国产日韩欧美在线 | 亚洲天堂五码 | 天天操精品 | 精品av一区二区 | 国产精品手机在线观看 | 久久99热这里只有精品 | 国产在线播放一区 | 视频免费1区二区三区 | 美女视频免费在线观看 | 亚洲一区二区视频 | 亚洲欧美一区二区视频 | 探花国产在线 | 911精品| 亚洲精品免费在线观看视频 | 青青青在线视频 | 无码aⅴ精品一区二区三区浪潮 | 国产精品11| 51成人做爰www免费看网站 | 91av影视| 麻豆国产在线视频 | 亚洲免费观看高清在线观看 | 欧美bbw视频 | 在线a毛片 | 国产亚洲精品av | 欧美人妖老妇 | 国产精品69毛片高清亚洲 | 青青草手机视频 | 欧美日韩一区二区视频观看 | 草久久久久 | 亚洲精品国产精品乱码不99热 | 日本高清在线一区 | 日韩在线一区二区三区 | 亚洲欧美日韩一区二区三区四区 | www.久久艹| 97se视频| 国产剧情av在线 | www色视频 | 96福利视频 | 97超碰国产在线 |