Neural Networks target:
application: speech(语音识别) ----> images(计算机视觉)—> text(NLP)
neuron(神经元):可以将一个简单的模型例如logistic regression 看作一个简单的neuron
layer(层) : some neuron or single,输入equal or similar feature and out put some data together
activation(激活) :将 input of neuron called activation
activation function:激活函数是代表能够输出激活值的函数
hidden layer: 知道输入和输出,中间的处理neuron叫做hidden layer
输入一组数字向量,经过一系列层的处理,输出另一组数字向量
《四层的神经网络》
input等于0层,123隐藏层,4 4为输出层
计算时候从左向右的方向进行计算
d ) Tensorflow的数据表现形式
因为tensorflow基本处理很大的数据集,都用矩阵表示来让计算更加高效
使用: 一般自己加载和操作数据的时候使用numpy,将数据转入tensorflow 时候会转化为tensor来方便计算和处理
definition: AI 可以做人类所做的一切事情
numpy库中中的用于两个矩阵之间的乘法,也可以等价于 AT @ W
步骤: 1.指定模型(设置dense层) 2.compile编译模型 3.epoch 训练模型
model= sequential( [ Dense() Dense() ] )
对于分类问题使用 model.compile(loss = BinaryCrossentropy()) 二元交叉熵损失函数
对于线性回归:model.compile(loss = MeanSquareError ()) 均方差
使用反向传播 model.fit( X , y , epochs = 100 )
作用:有时不仅是0-1的概率,有不同的条件需要找不同的函数
g(z) = max(0,z)
g(z) = z = wx + b
如果计算y = 某个值的cost function 则只需要带入对应的成本函数
当计算时,有时候式子之间有计算误差,所以在误差函数后加(from_logits = true)
作用:如果梯度是一直稳定下降的时候就会适当的增大 α,当来一个值两边震荡时,会减小α
**使用:**
作用: 对于前一层的feature并不是全部选取,而是选取了一部分
取出 70% 用来作training set,其余的30%用来作 test set评估model的泛化能力
但是只是用测试集来评估几次多项式也是不准确的
60% training set 20% cross validation 20% test set
先用training set 和 cross validation 来选择最佳的模型,然后确定好了最佳模型以后我们将在最后的 test set模型测试最终的准确度
d 代表了多项式的次数
d越大,J-train越来越小,J-cv越来越大
high-bias(欠拟合) :在training set表现不好
high-variance(过拟合):在 验证集表现 相比training set 差得多,增加training可以改善
当 **入** 越大最后拟合的曲线接近一条 y = b 的直线,y越小也会出现 overfit
可以使用交叉验证来选择合适的 入
**data augmentation **:的一个技巧:对数据所作的改变或者扭曲,例如给语音 加上噪音,给图片扭曲,但是最后得到的数据仍和测试集中得到的很相似。
作用:使用来自不同任务的数据来解决当前的任务,可以通过学习识别猫,狗,牛,人等,为前几个层学习了一些合理的参数,然后将参数transfer到新的神经网络中去
Why? 为什么通过识别其他的东西能够帮助识别类似手写数字一样的东西呢?
因为头几层的网络都在识别图像的基本特征,找到边角,曲线,基本形状等相似的特征,所以对于不同类型的图片效果都是一样的
why:因为例如罕见病中,数据集很多都是不患病的,所以需要衡量一个算法好坏
设置一个高的阈值,会使精确度提高,但是召回下降,相反的话召回提高,但是精确度下降