引言
深度学习是人工智能领域的一个重要分支,它通过模拟人脑的神经网络结构,使计算机能够从大量数据中自动学习和提取特征。随着计算能力的提升和大数据的涌现,深度学习在图像识别、自然语言处理、语音识别等领域取得了显著的成果。本文将带领读者从零开始,通过一个入门案例全面解析深度学习的概念、技术以及应用。
深度学习基础
1. 神经网络
神经网络是深度学习的基础,它由多个神经元组成,每个神经元都连接到其他神经元。神经网络通过前向传播和反向传播的方式学习数据中的特征。
神经元结构
class Neuron:
def __init__(self, input_size):
self.weights = np.random.randn(input_size)
self.bias = np.random.randn()
self.activation_function = sigmoid
def forward(self, inputs):
linear_output = np.dot(inputs, self.weights) + self.bias
return self.activation_function(linear_output)
def sigmoid(x):
return 1 / (1 + np.exp(-x))
前向传播
def forward_propagation(inputs, neuron):
return neuron.forward(inputs)
反向传播
def backward_propagation(inputs, outputs, neuron):
error = outputs - targets
neuron.weights -= learning_rate * np.dot(error, inputs)
neuron.bias -= learning_rate * error
2. 激活函数
激活函数是神经网络中用于引入非线性特性的函数,常见的激活函数有Sigmoid、ReLU、Tanh等。
Sigmoid函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
ReLU函数
def relu(x):
return np.maximum(0, x)
3. 损失函数
损失函数用于衡量模型预测值与真实值之间的差异,常见的损失函数有均方误差(MSE)、交叉熵(Cross-Entropy)等。
均方误差(MSE)
def mse_loss(y_true, y_pred):
return np.mean((y_true - y_pred) ** 2)
交叉熵(Cross-Entropy)
def cross_entropy_loss(y_true, y_pred):
return -np.sum(y_true * np.log(y_pred))
入门案例:手写数字识别
手写数字识别是深度学习领域的一个经典入门案例,我们将使用MNIST数据集进行演示。
1. 数据预处理
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
# 加载数据集
mnist = fetch_openml('mnist_784')
X, y = mnist["data"], mnist["target"]
# 将标签转换为独热编码
y = to_categorical(y)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
2. 构建神经网络
from keras.models import Sequential
from keras.layers import Dense, Flatten
# 构建模型
model = Sequential([
Flatten(input_shape=(28, 28)),
Dense(128, activation="relu"),
Dense(10, activation="softmax")
])
3. 训练模型
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
model.fit(X_train, y_train, epochs=10, batch_size=32)
4. 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", accuracy)
总结
通过本文的入门案例,读者可以了解到深度学习的基本概念、技术以及应用。在实际应用中,深度学习可以解决许多复杂问题,但同时也需要大量的数据和计算资源。希望本文能够帮助读者开启深度学习之旅。
