目录
前言
目前主流的深度学习框架有Pytorch和TensorFlow。其中,PyTorch的优势在于简洁性(编程同Python几乎一致),而TensorFlow编程思路相对会更复杂一些。另外,PyTorch采用了动态图的计算方式,而TensorFlow采用静态图(TensorFlow2.0引入了动态图,但不够稳定)。简单来说,动态图就是一边编程一边执行,而静态图需要现先将网络结构设计好再去运行网络。但是,PyTorch也有一定的弱势,比如在可视化上Pytorch使用visdom(Python可视化库)实现,TensorFlow可视化使用第三方工具Tensorboard。并且,TensorFlow提供一套公共框架TF serving,可以很容易部署模型,而PyTorch是没有这样一个框架的,因此部署服务相对麻烦。
综上所述,Pytorch对于新手入门深度学习是比较友好的。本系列学习文章运行环境为:win64+cuda11.1+pytorch1.9.1+python3.9+pycharm。
一、机器学习简介
机器学习就是将无序数据转化为价值的方法,即从数据中抽取规律,并预测未来数据趋势。机器学习主要应用如下:
- 分类问题:图像识别、垃圾邮件识别
- 回归问题:股价预测、房价预测
- 排序问题:点击率预估、推荐
- 生成问题:图像生成、图像风格转换、图像文字描述生成
机器学习应用流程:
机器学习岗位职责:
- 数据处理(采集+去噪)
- 模型训练(特征+模型)
- 模型评估与优化(MSE、F1-score、AUC+调参)
- 模型应用(A/B测试)
二、深度学习简介
机器学习是实现人工智能的方法,深度学习是实现机器学习算法的技术。它包含了:
- 卷积神经网络(CNN)
- 循环神经网络(RNN)
- 自动编码器
- 稀疏编码
- 深度信念网络
- 限制波尔兹曼机
- 深度强化学习(DRL):深度学习+强化学习
三、神经元
1、逻辑斯底回归模型
神经元是最小的神经网络。如下图所示,在二分类的逻辑斯底回归模型中,一个神经元有多个输入和一个输出,这些输入经过加权求和得到一个数值,然后将该数值放进函数中,最后得到输出。
在公式中, 代表权重,W越大,代表W1*X1的值越大,相应的作用也更大; 为问题中抽取的具体特征; 代表激活函数;b代表偏值,假如在一个二维平面中,与y轴相交的值就为b,在三维平面中b就是一个平面。
在神经元结构中,当激活函数sigmoid确定后,那么模型也可以随之确定。
2、神经元多输出
对于多分类的逻辑斯底回归模型,只需要添加神经元。如下图所示,加一个神经元 ,这时W从向量扩展成矩阵,那么对应输出则变成向量(n个输出结果)。
同时,输出向量(输出层)通常会经过归一化处理,以确保各个类别的概率之和为1。
举例如下:
- ,假设Y为输出的两个权重向量
- ,假设激活函数为
- , 求出归一化需要除以的分母
- ,输出结果
- , 输出结果
- , 输出结果
3、目标函数
目标函数(也称为损失函数或代价函数)用于衡量模型的预测输出与实际标签之间的差异。在回归任务和分类任务中常见的损失函数有:
- 平方差损失: ,衡量了模型预测值与真实值之间的差异。
- 交叉熵损失: ,衡量了模型的输出概率分布与真实标签之间的差异。
通常可以调整参数是模型在训练集上的损失函数最小。
4、梯度下降
梯度下降算法公式为 : ,其中 代表参数, 代表学习率 。在这个公式中,影响最大的参数是 , 是一个预先设定好的值,可以在模型中不断地去调整它来使模型达到最优效果。