一、最初始化的神经网络 神经元模型
模拟生物神经系统 最基本成分是神经元模型 其从其他神经元传递过来输入信号 通过不同weight进行整合 并与神经元阈值比较 通过激活函数处理神经元输出
Q 这里与神经元阈值比较没搞明白是在干啥??是bias吗??
激活函数包含阶跃函数即0 or 1的输出 但不连续不可微 所以转化为sigmoid函数 更为平滑可微
二、感知机
感知机由两层神经元组成 可以实现简单操作 但对于复杂的线性不可分问题无法学习 所以引入了多层神经元 包含输入层 隐层 输出层 称为多层前馈神经网络
训练模型其实就是学习网络参数的过程 比如weight bias
三、神经网络的训练
训练复杂的多层网络需要反向传播即back propagation 一层一层更新参数
这里涉及到网络参数个数计算 输入层神经元个数*隐层1神经元个数+隐层1神经元个数*隐层2神经元个数+……直到隐层n神经元个数*输出层神经元个数 (weight)+每层神经元个数(bias)
避免过拟合:val早停;正则化(在loss func中加入参数大小限制or个数限制 来限制model的复杂度)
四、全局最小与局部极小
参数空间中梯度为0的点就是局部极小点 即可能存在多个局部极小 但全局最小只有一个 这是我们搜索或者说是训练想要达到的目标
如何避免or跳出 局部极小:多组不同初始化参数;模拟退火(每一步都以一定概率接受比当前解更差的结果 就能跳出极小值);随机梯度下降(梯度下降中引入随机性)
五、深度学习
即很深层的神经网络 (隐层数量多) 但训练成本较高 减少训练成本的方法有:预训练;weight或者说参数共享 比如CNN 即每一层的卷积核 e.g., 5*5 可以共享权重 这其实也是防止过拟合的一种方式(通过防止model过于复杂)
深度学习其实就是学习输入数据特征的过程 让这个特征和我们想要的输出(target)产生联系 区别于之前的传统机器学习 需要人类先获取feature再输入到model学习来说是进一步的自动化