【机器学习】从零开始理解深度学习——揭开神经网络的神秘面纱

【机器学习】从零开始理解深度学习------揭开神经网络的神秘面纱

1. 引言

深度学习是机器学习的一个重要分支,通过多层神经网络处理复杂数据,广泛应用于图像识别、自然语言处理等领域。我们将在这篇文章中揭开深度学习和神经网络的神秘面纱。

2. 什么是神经网络?

神经网络由大量"神经元"组成,模拟生物神经元的连接。它通过训练数据调整权重来学习复杂模式。

神经网络的代码示例

我们用 Keras 构建一个简单的神经网络模型:

python 复制代码
from keras.models import Sequential
from keras.layers import Dense

# 创建一个简单的神经网络模型
model = Sequential()
model.add(Dense(32, input_dim=8, activation='relu'))  # 输入层和第一个隐藏层
model.add(Dense(16, activation='relu'))  # 第二个隐藏层
model.add(Dense(1, activation='sigmoid'))  # 输出层

# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 打印模型结构
model.summary()

3. 前馈神经网络 (Feedforward Neural Network, FNN)

前馈神经网络是最简单的网络架构,数据从输入层单向流动到输出层。

示例代码:

python复制代码import numpy as np

# 输入数据
X = np.array([[0,0], [0,1], [1,0], [1,1]])
y = np.array([[0], [1], [1], [0]])  # XOR 问题

# 前馈网络计算
model = Sequential()
model.add(Dense(4, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['binary_accuracy'])

# 训练模型
model.fit(X, y, epochs=1000, verbose=0)

# 预测输出
print(model.predict(X))

4. 反向传播与梯度下降

反向传播算法用于计算误差并更新神经网络中的权重。梯度下降算法则是通过最小化损失函数来优化权重。

示例代码:

python复制代码# 模型编译时指定使用反向传播和梯度下降算法
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])

# 训练模型时,反向传播自动发生
model.fit(X, y, epochs=100)

5. 深度神经网络 (Deep Neural Network, DNN)

深度神经网络拥有多层隐藏层,能够学习到复杂的特征。

示例代码:

python复制代码# 深度神经网络
model = Sequential()
model.add(Dense(64, input_dim=8, activation='relu'))  # 第一层
model.add(Dense(32, activation='relu'))  # 第二层
model.add(Dense(16, activation='relu'))  # 第三层
model.add(Dense(1, activation='sigmoid'))  # 输出层

# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 训练模型
model.fit(X, y, epochs=100)

6. 常见激活函数

神经网络通过激活函数为网络引入非线性能力。

示例代码:不同激活函数的应用

python复制代码# 使用 Sigmoid 激活函数
model.add(Dense(64, activation='sigmoid'))

# 使用 Tanh 激活函数
model.add(Dense(64, activation='tanh'))

# 使用 ReLU 激活函数
model.add(Dense(64, activation='relu'))

7. 优化算法

优化算法决定了权重更新的方式,常用的优化算法包括梯度下降和 Adam。

示例代码:Adam 优化器

python复制代码# 使用 Adam 优化器
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 使用 SGD 优化器
model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['accuracy'])

8. 深度学习框架介绍

现代深度学习依赖于强大的框架,如 TensorFlow 和 PyTorch。下面是使用 TensorFlow 构建一个简单模型的示例。

示例代码:使用 TensorFlow 构建模型

python复制代码import tensorflow as tf

# 创建一个简单的深度学习模型
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 打印模型结构
model.summary()

9. 应用案例

图像分类:

深度学习在图像分类中广泛应用。以下是使用 Keras 进行图像分类的代码。

示例代码:简单的图像分类网络

python复制代码from keras.datasets import mnist
from keras.utils import to_categorical

# 加载 MNIST 数据集
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# 数据预处理
X_train = X_train.reshape((X_train.shape[0], 28 * 28)).astype('float32') / 255
X_test = X_test.reshape((X_test.shape[0], 28 * 28)).astype('float32') / 255
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

# 构建模型
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(28 * 28,)))
model.add(Dense(10, activation='softmax'))

# 编译模型
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

# 训练模型
model.fit(X_train, y_train, epochs=5, batch_size=128, verbose=1)

# 评估模型
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"测试准确率: {test_acc}")

10. 总结与未来展望

通过本文,我们从基础开始理解了神经网络与深度学习的核心概念。随着计算能力的提升和算法的改进,深度学习的未来前景广阔。未来,我们可以期待深度学习在更多领域取得突破,尤其是在医疗、金融和自动驾驶等领域。

11. 参考资料

12.使用机器学习分析CSDN热榜

  • 吃枣药丸

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个 吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦

承接毕设辅导,代码开发等

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号
更多专栏:

掘金账号 CSDN账号
感谢订阅专栏 三连文章

相关推荐
Suyuoa26 分钟前
附录2-pytorch yolov5目标检测
python·深度学习·yolo
余生H1 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
代码不行的搬运工2 小时前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
罗小罗同学2 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤2 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭2 小时前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~2 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
极客代码2 小时前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
Seeklike2 小时前
11.22 深度学习-pytorch自动微分
人工智能·pytorch·深度学习
YRr YRr3 小时前
如何使用 PyTorch 实现图像分类数据集的加载和处理
pytorch·深度学习·分类