先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
正文
命题1:不受限制的McCulloch–Pitts(M-P)单元只能实现单调逻辑函数。
命题2:任何逻辑函数 𝐹 ∶
→ {0, 1} 都能由一个两层的M-P网络计算得到。
1.2 感知机 (Perceptron)
之前我们输入的都是逻辑单元01,这次x可以为实数,对x进行加权(w),求和,与阈值(b)进行比较,同样大于的取1,不大于的取0或者-1。
这个比较操作通过移项可以写成公式 ,w和x为行或列数为1的矩阵,相乘结果为实数。
在M-P单元的输入连接上加上权重
提出监督学习:
- 对于每个数据点
及对应的标签
, 计算输出
- 更新参数:
;
- 决策表边界是一个超平面
其中𝜂为学习率且 𝜂 > 0
注:该更新参数的过程类似于梯度下降,不过对于t和y它们是离散的,但在有限距离内依旧可以收敛但正确解上:
命题 4: 如果训练数据集线性可分,则感知机必定能收敛。并且训练中需要迭代的次数存在一个上限。证明参见 (Novikoff, 1962)
命题1:不受限制的McCulloch–Pitts(M-P)单元只能实现单调逻辑函数。
命题2:任何逻辑函数 𝐹 ∶
→ {0, 1} 都能由一个两层的M-P网络计算得到。
命题3:所有的逻辑函数都能被包含与、或、非功能的网络所实现。
缺点: 决策边界通常与样本点距离很近, 因此对噪声敏感。
对于图右侧,无法寻找一个线性超平面将其分解,这也使得神经网络进入第一次低潮。
同一层内的多个感知机
当多个感知机被组合起来时, 输出神经元之间是互相独立的; 因此多个感知机的学习过程可以看成是相互独立的。
1.3 自适应线性神经网络(ADALINE)和MADALINE模型
结构与感知机一致,训练算法不同。
用
而不是用𝑦来更新参数
- 最小化均方误差
.
- 学习算法:
,
- 决策表边界是一个超平面
或
𝜂为学习率且𝜂 > 0
别名: LMS规则,Delta规则,Widrow-Hoff 规则,实际上是SGD。
另一视角:
- 对变量 𝑧 的线性激活函数 (这也是名字中(Adaptive Linear Neuron)线性的由来)
- 阶跃函数只作用于输出𝑦 并且输出不参与学习过程
MADALINE模型
- MADALINE: 多个ADALINE模型。
- 用于分类的三层(输入层, 隐含层, 输出层)全连接前馈网络,将 ADALINE作为其隐含层和输出层单元。
- 三种不同的MADALINE训练算法:
- 最早追溯到1962年并且不能用于更新隐含层和输出层的连接权重。
- 1988年提出了改进训练算法。
- 第三个算法应用于改进后的网络,将阶跃函数替换成 sigmoid激活函数; 后来被证明与反向传播等价。
二、多层感知机
2.1 回顾:
感知机:
自适应线性神经网络(ADALINE)
用ADALINE解决异或(XOR)问题:
布尔函数:
x_{1} | x_{2} | t |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
误差函数: 其中
令 𝛻𝒘𝐸 = 0, 𝛻𝑏𝐸 = 0, 则
则求得:
这样的话无论输入什么,输出都成了定值0.5,显然是错的。
在二维平面上显然无法有一条直线将0和1分开。
局限:
- 感知机和ADALINE都只能解决线性可分的分类问题
- 这个问题导致了神经网络领域的研究在1960-1970年代退 潮 (第一次寒冬)
- 如果所研究的问题是线性不可分的,我们该怎么做?
这个问题主要是由于它是一个单层模型,这个时候我们就要用到多层感知机,对输入进行一个非线性的转换,转换到另外的一个空间,我们称作特征空间,经过多次转换有可能在一个特征空间就可以用一个超平面把这几个点给分开了。
此外在SVM领域核函数向量机(Kernel SVM)专门用来解决这种情况。
2.2 多层感知机(Multi-layer Perceptron, MLP)
以下是一个多层感知机的结构, 每个计算单元我们用圆圈来表示。
对于输入来讲x就是问题的一种表示,对于图像来讲的话那么x就是一个像素点(一个实数来表示灰度、一个三维向量表示RGB值),对于声音来讲的话x为每刻声音的强度,对于自然语言的话x表示每个单词…
其他层都要做计算,包括输出层,像之前所介绍的Softmax输出一个y值,与标签t进行比较。中间还有很多层,叫做隐藏层。
隐藏层的目的就是要对输入进行多次的非线性变换,期望经过多次的变换,输出能够用一个很简单的模型,比如线性回归的模型就能把类别分开。
除了输入共 𝐿 层
连接类型:
- 相邻层之间的神经元两两连接(多层感知机又叫全连接模型)
- 相邻层之间没有反馈连接(单项箭头)
- 同一层内没有横向连接
每个神经元接收前一层神经元的输出,并根据激活函数作出响应。
前向传播
- 遍历 𝑙 = 1, … , 𝐿 − 1。
- 计算第 𝑙 层的神经元 𝑗 的输入
及其输出
。
表示l层单元 j 与l-1层单元 i 之间的权重,
表示整个l -1 层与 l 层 单元 j 的偏置。
- 𝑓 是激活函数,注意
即第一层输入。
- 𝑙 = 𝐿 即最后一层对应分类层,比如回归。
比如对于第l层每一个单元,它的数值yj由:
- 前l-1层全部数据的加权求和再加上一个偏置得到u。
- 对z进行y=f(z)激活得来。
对于偏置:也可以把偏置看作每一层多出来一个神经元,这样就可以把它吸收到w里面去进行公式化简。
向量形式的前向计算
激活函数
Logistic函数及其梯度
双曲正切函数及其梯度
整流线性激活函数(ReLU)及其梯度
再看异或(XOR)问题
布尔函数:
x_{1} | x_{2} | t |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
我们从多层感知机的角度考虑上述问题:
我们在输入层与输出层之间加入了一个隐藏层,权值为V,偏置为c。
则经过这一层,分别对于上表4种情况的h为:
ps: 取ReLU结果为:
此时就变得线性可分了。
继续计算得到y,分别为0,1,1,0与 t 一 一对应,相同。
这样XOR问题就可以被正确求解,但该问题比较简单,我们可以通过试一试的办法把权值和偏置试出来,但对于一个实际问题,维数很高,我们就需要让机器去学习这些算法。
2.3 反向计算
我们在反向计算中就会使用BP算法来学习这些参数。
我们回顾多层感知机,其倒数第二层会把问题引入到如分类问题上去,
损失函数:
其中
是每个样本n的损失函数
以上y分别使用了 logistic/sigmoid 函数和 softmax 函数
- 如果是均方误差或欧氏距离,可以使用ReLU其它的如双曲正切。
- 而使用交叉熵函数作为损失函数,不能用ReLU。
输出层的激活函数和损失函数由任务类型决定,见下表。它们与隐藏层的激活函数的选择是独立的。
参数更新
参数更新(α为学习率)
正则化(在损失函数加上额外的一项,叫做权重衰减,减轻过拟合。)
参数衰减通常作用于 (对
不必要,只有w与x相乘)
𝑤的参数更新变为:
梯度、局部敏感度
定义局部敏感度:
对于 :
其中 f 是激活函数。
即我们求误差函数对所有参数的偏导,等价去于计算各层的局部敏感度。
局部敏感度求法
从最后一层出发,最后一层损失函数可能是 MSE 或者 Softmax交叉熵层*。*
- 均方误差(MSE)层的局部敏感度
- Softmax交叉熵层的局部敏感度
- 其它层的局部敏感度
向量形式的反向传播
梯度消失(Gradient Vanishing)
对于隐含层 1 ≤ 𝑙 < 𝐿:
- 对于logistic函数
则
- 对于tanh函数
则
对于这两个激活函数, 从第𝐿层到第一层, 𝜹 (𝑙) 变得越来越小。 浅层的梯度会逐渐接近于零。
ReLU可以缓解这一问题
实现过程
前向计算 – 计算 和
, 对所有的 𝑙 = 1,2, … , 𝐿
后向计算 – 计算 和
对所有的 𝑙 = 𝐿, 𝐿 − 1, … ,1
对所有 𝑙 = 1,2, … , 𝐿, 更新 和
模块化编程
- 用类来实现层,并提供前向和后向计算函数。
- 不同类型的层拥有不同的前向和后向计算函数,例如输入层、隐含层、softmax输出层、sigmoid输出层等。
- 通过组合不同的模块来构造不同的多层感知机模型。
实验
实验1:对二维平面上的点进行分类
A Neural Network Playground (tensorflow.org)")
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
不同的前向和后向计算函数,例如输入层、隐含层、softmax输出层、sigmoid输出层等。
- 通过组合不同的模块来构造不同的多层感知机模型。
实验
实验1:对二维平面上的点进行分类
A Neural Network Playground (tensorflow.org)")
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-4c2vV2F4-1713271730195)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!