手把手入门神经网络系列(1)_从初等数学的角度初探神经网络

作者: 龙心尘&&寒小阳
时间:2015年11月。
出处:http://blog.csdn.net/longxinchen_ml/article/details/50082873
http://blog.csdn.net/han_xiaoyang/article/details/50100367
声明:版权所有,转载请联系作者并注明出处,谢谢。

1.开场先扔个段子

在互联网广告营销中,经常会有这样的对话:
问:你们的人群标签是什么样的?
答:我们是专门为您订制的look-alike标签!
问:好吧,你们的定向算法能不能说明一下?
答:我们用的是deep learning技术!

一般来说,话题到此,广告主会因为自己理论知识的匮乏而羞愧得无地自容。唯一的办法就是先透过投放广告的方式先学习起来。
——刘鹏《广告技术公司十大装逼姿势》

deep learning、DNN、BP神经网络等这些高逼格的词,真的很能吓唬人,但真正的内容什么,很多人却解释得不多,要么说得太晦涩,要么说得太神叨。其实,就我们的粗浅了解,神经网络、深度学习啥的,入门还是很容易的。如果去除外面浮夸的包装,它们的理论基础也相当直白。当然这并不是说神经网络不难,它们真正难的地方是在实践方面,但这也是有方法可处理的。为了浅显易懂地给大家解释这个过程,我们开设了“手把手入门神经网络系列”
在本篇文章中,我们依然少用公式多画图,只用初等数学的知识解释一下神经网络。

2.神经网络有什么牛逼之处?

机器学习算法这么多,为什么神经网络这么牛逼?
为了解释这个问题,我们呈现了神经网络在分类问题上优于逻辑回归的地方——它几乎可以实现任意复杂的分类边界,无误差地实现训练集上的分类。
然而,这是有代价的:由于其强大的拟合能力,极容易产生过拟合。为了降低过拟合,我们介绍了一种降低过拟合的思路。
在这个过程中,我们尽量解释神经网络每一步操作对应的现实意义和最终目的。可是,神经网络的可解释性往往是个非常大的难题。为此,我们采用了最易于理解的“交集”(逻辑与)、“并集”(逻辑或)神经网络,希望能帮助大家进行启发式理解。
但是,神经网络的问题并没有解决完。之后,我们引出了用神经网络的一些典型问题,我们将在接下来的系列文章对其进行深入探讨。

3.从逻辑回归到神经网络

神经网络主要应用场景之一是分类,我们之前博文中提到的逻辑回归也是解决分类问题的一类机器学习算法,有趣的是,实际上两者有着很紧密的关系,而逻辑回归作为帮助我们理解神经网络的切入口也是极好的,所以我们先从逻辑回归开始。看过本我们前文《机器学习系列(2)_用初等数学解读逻辑回归》的读者盆友应该会有个印象,逻辑回归可以理解成将空间中的点经过一系列几何变换求解损失函数而进行分类的过程,具体过程如图:
逻辑回归
具体分析一下我们所求的“参数” 的几何意义, (θ1,θ2) 就是图中法向量p的方向, θ0 对应着法向量p的起点距离坐标系原点的偏移。在神经网络中,向量 (θ1,θ2) 也叫做权重,常用 w

  • 21
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
神经网络是一种模拟人脑神经元之间相互连接的计算模型。在Python中,可以使用多种库来实现神经网络,如TensorFlow、PyTorch和Keras。下面是一个简单的手把手教程来构建一个基本的神经网络模型: 1. 导入所需的库: ```python import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.optimizers import Adam ``` 2. 加载数据集: ```python (x_train, y_train), (x_test, y_test) = mnist.load_data() ``` 3. 数据预处理: ```python # 将图像转换为一维向量 x_train = x_train.reshape(x_train.shape[0], -1) x_test = x_test.reshape(x_test.shape[0], -1) # 将图像像素值缩放到0-1之间 x_train = x_train.astype('float32') / 255.0 x_test = x_test.astype('float32') / 255.0 # 对标签进行独热编码 y_train = tf.keras.utils.to_categorical(y_train, num_classes=10) y_test = tf.keras.utils.to_categorical(y_test, num_classes=10) ``` 4. 构建模型: ```python model = Sequential() model.add(Dense(64, activation='relu', input_shape=(784,))) model.add(Dense(64, activation='relu')) model.add(Dense(10, activation='softmax')) ``` 5. 编译模型: ```python model.compile(optimizer=Adam(learning_rate=0.001), loss='categorical_crossentropy', metrics=['accuracy']) ``` 6. 训练模型: ```python history = model.fit(x_train, y_train, batch_size=128, epochs=10, validation_split=0.2) ``` 7. 评估模型性能: ```python loss, accuracy = model.evaluate(x_test, y_test) print('Test loss:', loss) print('Test accuracy:', accuracy) ``` 这是一个简单的示例,你可以根据自己的需求和数据集进行进一步的修改和调整。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值