x向量:输入特征组成
a向量:x计算所得的激活值组成的向量
a:概率、最终的激活、神经网络的最终预测
在一般的逻辑方程中,我们需要手动特征工程,例如预测房屋价格,我们需要已知X1X2,并手动决定如何将他们组合在一起,以提供更好地功能;
神经网络不需要手动特征工程,他可以学习其要制作的功能,即当我们从数据中训练它时,不需要明确决定还有哪些功能,神经网络会自行计算
可能会遇到多隐藏层的模型,这样的多层被称为多层感知器。
神经网络架构问题:决定有多少个隐藏层以及每个隐藏层有多少个神经元,从而选择一个好的架构
上标[i]表示第i层网络层
第i层网络层的输出是第i+1网络层的输入
对于每一层输入,对其应用一堆逻辑回归单元g函数
神经向量的输入层,一般不算在神经网络的总层数中,称作第0层。如下图为四层网络神经结构。
x向量定义为a[0]
g函数被定义为激活向量,其作用是计算某一层的激活值,如sigmoid函数。
f(x)表示线性回归或逻辑回归的输出;
这种模式也叫做前向传播算法,从左向右依次传播神经元的激活;
随着靠近输出层,隐藏单元的数量会逐渐减少,直到剩一个
先用Numpy数据形式表现,是两个[],代表是二维数组,当只有一个[]时,表示是一个一维数组;
二维数组形式可以让TensorFlow计算更高效
#在TensorFlow中表示矩阵的方式:
#变为tf.Tensor([],)的形式;
tf.Tensor([],)的形式 也被称为张量
#在NumPy中表示矩阵的方式:
np.array([[]])
#从TensorFlow方式变回NumPy的方式:
a1.numpy()
执行顺序:NumPy以自己的方式存储二维数据,然后将数组传递给TensorFlow,传递过来时,TensorFlow喜欢将其转换为自己的内部格式–张量,然后使用张量有效运行,当读回数据时,可将数据保留为张量,或转换回NumPy数组
ANI:狭隘人工智能,专注于实现某一个方面
AGI:人工智能,模拟人大脑的行为
神经网络高效的原因:可矢量化,可以使用矩阵乘法有效实现
向量点乘
矩阵点乘
Numpy中矩阵相乘
网络层向量化
以逻辑回归为例
1.指定如何在给定输入x和参数的情况项目,计算输出
2.指定损失和成本
指定什么是损失函数,同时定义我们用来训练神经网络的成本函数
损失函数:二元交叉熵
3.最小化成本函数,其中最重要的是计算偏导数,那么此时调用tensorflow库中的fit函数,就可利用反向传播的方法计算
1、输出层的激活函数,取决于输出层要预测的y标签是什么
Y=0/1(二进制分类问题):Sigmoid
Y=+/-:线性激活函数
Y>=0:ReLU
2、隐藏层的激活函数,一般用ReLU作为默认激活函数
ReLU更快,且只有一部分是平坦的,sigmoid有两处平坦。平坦部分会使得梯度下降很慢,效果不明显
如果使用线性激活函数,或者不使用激活函数时,那么大型的神经网络计算出的值就等于线性回归函数的输出
当输出的y值不止为0/1时,而是有多个输出;即只输出一个数字,但这个数字取少量离散值而不是任何数字
当aj越小,则L越大;
所以当aj无限接近1时,则说明与准确值越来越接近了,L越小
舍入误差改进–更准确的计算
不再用中间值a代替了,直接将最原始的公式代入式中,让tensorflow可以重新排列术语,使计算这种数值更准确;也就是说不计算中间值
此时,则改变了激活函数,不再用softmax,而使用线性激活函数
三个二分类问题
1、将三类问题放在一个神经网络中时:对于输出层的每一个结点,分别使用一次sigmoid激活函数;即将三类问题放在一个向量中输出
2、当然也可以按图中第一行所示,分为三个神经网络分别输出检测
代替梯度下降,更快的降低成本函数,找到参数值-----Adam(自适应矩估计)
即改变学习率
当α过小,朝一个方向下降速度太慢时,可自动增大尔法;
当α过大,使方向来回摇摆时,可自动减小尔法;
α在全程并不是唯一值,可自动变化
该方法的代码,与原来相比,仅是多了一步选择Adam优化器:
但是该方法需要默认初始尔法值,图中举例为10^-3
之前我们见到的都是密集层神经网络,即下一层都会受到上一层的激活
~卷积层:每个神经元都只能看到输入的局部信息(可重叠),是一个有限的局部输入窗口
为什么只看一部分信息?
此时会涉及架构参数的选择如:每个神经元可以看到的输入窗口有多大、一层有几个神经元。。。
由卷积层构成的网络:卷积神经网络