一、什麼是Sigmoid函數
Sigmoid函數,也稱為邏輯斯蒂函數,是一種常見的激活函數,常用於解決二分類問題。Sigmoid函數的形式如下:
f(z) = 1/(1+exp(-z))
其中exp函數為指數函數,z為輸入。Sigmoid函數在輸入接近於0時,輸出接近於0.5;輸入越大,輸出越趨近於1;輸入越小,輸出越趨近於0。
二、在神經網絡中使用Sigmoid函數進行激活
在神經網絡中,我們可以使用Sigmoid函數作為每個神經元的激活函數。一個神經元可以表示為以下公式:
y = f(w1x1 + w2x2 + ... + wnxn + b)
其中,w1, w2, …, wn為權重,x1, x2, …, xn為輸入,b為偏置量,f為激活函數。我們可以把Sigmoid函數作為激活函數,將等式改寫為:
y = 1/(1+exp(-(w1x1 + w2x2 + ... + wnxn + b)))
這樣,每個神經元的輸出都可以被Sigmoid函數所激活,而整個神經網絡也可以通過調整不同神經元的權重和偏置量來優化模型。
三、代碼示例
下面是一個使用Sigmoid函數作為激活函數的神經網絡模型的Python示例代碼:
import numpy as np
class NeuralNetwork:
def __init__(self, num_inputs, num_hidden, num_outputs):
# 初始化神經網絡模型,包括輸入層、隱藏層和輸出層的權重和偏置量
self.hidden_weights = np.random.randn(num_inputs, num_hidden)
self.hidden_bias = np.zeros((1, num_hidden))
self.output_weights = np.random.randn(num_hidden, num_outputs)
self.output_bias = np.zeros((1, num_outputs))
def sigmoid(self, z):
# Sigmoid函數定義
return 1/(1+np.exp(-z))
def forward(self, inputs):
# 前向傳播函數,將輸入數據推送到輸出層
hidden_layer = np.dot(inputs, self.hidden_weights)
hidden_layer = hidden_layer + self.hidden_bias
hidden_layer_activation = self.sigmoid(hidden_layer)
output_layer = np.dot(hidden_layer_activation, self.output_weights)
output_layer = output_layer + self.output_bias
output_layer_activation = self.sigmoid(output_layer)
return output_layer_activation
def train(self, inputs, targets, num_epochs, learning_rate):
# 訓練神經網絡模型
for epoch in range(num_epochs):
# 前向傳播
hidden_layer = np.dot(inputs, self.hidden_weights)
hidden_layer = hidden_layer + self.hidden_bias
hidden_layer_activation = self.sigmoid(hidden_layer)
output_layer = np.dot(hidden_layer_activation, self.output_weights)
output_layer = output_layer + self.output_bias
output_layer_activation = self.sigmoid(output_layer)
# 反向傳播
error = targets - output_layer_activation
d_output_layer_activation = error * output_layer_activation * (1 - output_layer_activation)
error_hidden = np.dot(d_output_layer_activation, self.output_weights.T)
d_hidden_layer_activation = error_hidden * hidden_layer_activation * (1 - hidden_layer_activation)
# 更新權重和偏置量
self.output_weights = self.output_weights + learning_rate * np.dot(hidden_layer_activation.T, d_output_layer_activation)
self.output_bias = self.output_bias + learning_rate * np.sum(d_output_layer_activation, axis=0, keepdims=True)
self.hidden_weights = self.hidden_weights + learning_rate * np.dot(inputs.T, d_hidden_layer_activation)
self.hidden_bias = self.hidden_bias + learning_rate * np.sum(d_hidden_layer_activation, axis=0)
def predict(self, inputs):
# 使用訓練好的神經網絡模型預測新的數據
return self.forward(inputs)
四、總結
本文介紹了Sigmoid函數在神經網絡中的應用,包括Sigmoid函數的形式和神經元的實現方式。同時,本文提供了一個使用Sigmoid函數作為激活函數的神經網絡模型的Python示例代碼,讀者可以根據需要進行參考和修改。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/155402.html
微信掃一掃
支付寶掃一掃