机器学习
参考哔哩哔哩-李宏毅机器学习2017
摩霄志在潜修羽
骐骥一跃,不能十步。驽马十驾,功在不舍。
展开
-
关于训练DNN的一些技巧
当使用DNN训练一个模型时,可能会出现模型在测试集中表现不佳的情况。这不一定是因为出现了过拟合,还有很大可能是训练的模型在训练集中表现就不是很好,因此,当测试准确性时,应该同时计算模型在测试集和训练集的损失。例如下图,56层的DNN效果甚至可能差于20层的DNN,这可能是因为56层的DNN训练停止在了鞍点或者局部最小值点。使DNN模型表现更好的诀窍有下面这几点:...原创 2019-08-19 19:01:20 · 674 阅读 · 0 评论 -
梯度消失问题(vanishing gradient problem)
tips梯度消失的原因是使用了sigmoid作为激活函数sigmoid函数将很大范围的数对应的输出都映射到了0和1之间,这导致前向计算每个结点的值时,即使是一个很大的输入,经过一次sigmoid函数的变换,都会变成0到1之间的数,如此几次,便变得极小。反向传播计算∂C/∂z\partial C/\partial z∂C/∂z后,要逐层乘以前向计算好的xix_ixi,而这些xix_ixi...原创 2019-08-06 23:33:20 · 533 阅读 · 0 评论 -
卷积神经网络(Convolutional Neural Network, CNN)
为什么使用卷积神经网络CNN通常用于图像的识别上。关于为什么要在图像识别上使用CNN(为什么可以用较少的参数来做影像处理这件事),其原因大致有以下三条:神经网络中隐藏层的某个神经元的作用是识别图片的某部分,因此我们只需要得到图片那一部分的特征而不必考虑整张图片(例如某个神经元只用于识别鸟嘴):相同的部分在不同图片中可能位置不同,但由于它们的形状基本相同,因此连接它们的权重是可以共享的,...原创 2019-08-08 15:38:25 · 567 阅读 · 0 评论 -
李宏毅机器学习作业2-使用逻辑回归对人员按收入分类
说明本代码实现尚有很大不足,最终分类的正确率仅能达到78.25%,且迭代次数过多(100次) 或 不对数据进行任何处理 或 将所有特征均用minmax的方法归一化 的情况下,都会导致测试集的所有分类均为0,原因尚不明,恳请读者指正。另外,本代码未划分验证集,等有新思路再一并修改。代码# -*- coding:utf-8 -*-import numpy as npimport panda...原创 2019-08-01 22:01:51 · 662 阅读 · 0 评论 -
李宏毅机器学习作业1-使用线性回归预测PM2.5
先把代码mark一下,晚上再写心得。代码# -*- coding:utf-8 -*-import numpy as npimport pandas as pddef data_processing(df): df = df.replace('NR', 0.0) temp = np.array(df).astype(float) # 每隔18取一次PM2.5,...原创 2019-07-28 13:17:34 · 1987 阅读 · 5 评论 -
用一个简单的神经网络实现异或功能
前言前面学到,单层的逻辑回归模型无法解决线性不可分的问题,因此可以使用多层神经网络模型,其中神经网络的隐藏层可以被理解为用来将线性不可分的数据变为线性可分。李弘毅老师的机器学习课程在讲完反向传播后就直接开始讲keras的使用了,而我则迫切想自己从零开始实现一个简单的神经网络,因此便有了这篇文章。我设计的神经网络为全连接网络,如下:由于存在问题,这里只重点记录存在的问题。问题初始化权...原创 2019-08-04 21:02:30 · 4578 阅读 · 2 评论 -
逻辑回归(Logistic Regression)
前言上文《利用朴素贝叶斯进行分类》上文的最后部分,通过对朴素贝叶斯公式:P(C1∣x)=P(x∣C1)P(C1)∑i=1nP(x∣Ci)⋅P(Ci)P\left(\mathrm{C}_{1} | \mathrm{x}\right)=\frac{P\left(\mathrm{x} | \mathrm{C}_{1}\right) P\left(\mathrm{C}_{1}\right)}{\s...原创 2019-07-30 22:15:03 · 686 阅读 · 0 评论 -
反向传播(Backpropagation)
前言由于个人理解能力有限,我看了好几遍李宏毅老师的推导才大致理解,如有错误之处恳请指正。梯度与传播的关系前面已经使用泰勒展开推导过损失函数值沿变量梯度方向下降最快的结论,考虑如下的网络结构其中xnx_nxn代表输入的特征,wnw_nwn代表权重,bbb代表偏置,z=wx1+wx2+bz=wx_1+wx_2+bz=wx1+wx2+b,zzz作为激活函数σ(z)\sigma(z)σ...原创 2019-08-03 00:10:03 · 287 阅读 · 0 评论 -
主成分分析降维的数学推导
一、迹运算(1)迹(trace)是用来表示矩阵主对角元素和的概念:Tr(A)=∑iAi,i\operatorname{Tr}(\boldsymbol{A})=\sum_{i} \boldsymbol{A}_{i, i}Tr(A)=i∑Ai,i例如A=[a11a12a21a22]A=\begin{bmatrix}a_{11}&a_{12}\\a_{21}&am...原创 2019-07-21 21:01:18 · 437 阅读 · 0 评论 -
用泰勒公式推导梯度下降原理
1.什么是泰勒公式百度百科中的解释泰勒公式,应用于数学、物理领域,是一个用函数在某点的信息描述其附近取值的公式。如果函数足够平滑的话,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。说白了,泰勒公式就是:可以使用函数在某点的各阶导数组成高次多项式去逼近一个函数。泰勒公式表示为:h(x)=∑k=0∞h(k)(x0)k...原创 2019-07-25 16:56:53 · 1172 阅读 · 0 评论 -
利用朴素贝叶斯进行分类
前言由于本文章是对台大李宏毅老师的《机器学习》课程之《Classification》进行的个人总结,因此使用口袋妖怪(Pokeman)来举例说明。回归分析用于分类假设宝可梦的所有属性共七种,选出其中两种作为宝可梦的特征(也就是空间维度)。分类问题要求根据已知的两种宝可梦的特征训练集,来对新加入的点进行分类。一个问题:是否可以用回归的思想来解决分类问题呢?假设有两种类别,可以试着用用最小二...原创 2019-07-29 21:53:07 · 897 阅读 · 0 评论 -
线性回归中的误差及解决措施
线性回归中的误差通常有两个来源:来自方差Variance的误差来自偏置Bias的误差下面这张图直观表示了方差和偏置水平的关系。可以将真实值作为靶心,将带入拟合的曲线得到的输出值作为投掷的点,那么会遇到如下四种(2×22\times 22×2)情况,分别是:高方差高偏置,高方差低偏置,低方差高偏置,低方差低偏置。最理想的情况当然是所有点(无论是训练集还是测试集)正中靶心,此时处于低方差低...原创 2019-07-25 15:55:49 · 6429 阅读 · 0 评论 -
线性回归与梯度下降
一、梯度下降(Gradient descent)二、线性回归(Linear regression)1. 线性回归线性回归就是利用回归分析来确定两种或两种以上变量间相互关系的方法,输入为向量,输出为标量,一般形式为:y=w∗x+by=w*x+by=w∗x+b其中www 代表权重 WeightWeightWeight,bbb 则代表偏移量BiasBiasBias.举个线性回归例子:上...原创 2019-07-25 15:55:10 · 507 阅读 · 4 评论