吴恩达机器学习笔记
吴恩达机器学习笔记
看吴恩达机器学习(2022)做的学习笔记,自己复习用。
第一课监督学习
1.1-2.6节,基础定义
机器学习分为监督学习和无监督学习、(强化学习)。
监督学习(supervised learning)
监督学习(supervised learning)分为回归和分类问题。
x->y的映射
回归regression:y取任意值
分类classification:y取有限值,如0,1等。而且数字之间没有大小区别,只是指明不同class(category)

无监督学习(unsupervised learning)
无监督学习(unsupervised learning)有聚类、异常检测和降维三个应用

clusering algorithm

没有给出y值,而将未标志的的数据分为不同类(聚类问题)
获取没有标签的数据并自动分组到集群中

没有说把zoo、熊猫等化为一类,而是由算法自动找出相似的类别化为一类。
3.1-3.2线性回归模型
了解监督学习的过程。本节介绍监督学习的第一个model,Linear Regression Model。
如下,用直线模拟。regression model

一些专有名词


prediction y-hat
target y
one variable = univariate 单变量
linear regression
3.3-3.6 cost function
parameters:参数
coeffcients:系数
weights


为简化,假设b=0,考虑(1,1),(2,2),(3,3)

线性回归就是确定w和b参数,使J(W,B)最小。
接下来考虑b!=0的情况



4.1-4.6梯度下降gradient descent
含义
一种更系统的选择w和b的方法,适用于各种模型,不止线性回归模型。

可能有多个局部最小值

数学公式
ALpha:α,学习率
需要同时更新,如左侧

为简化,令b=0,只观察w

ALpha学习率
Alpha太小的话,过程很慢,浪费时间。
太大,在最小值左右摇摆,,由于导数原因,结果越来越差。

学习率不变,最后也能找到局部最小值


用于线性回归的梯度下降
cost function : 均方误差

线性函数是凸函数:convex function,只有一个全局最小值,没有任何局部最小值。

batch gradient descent
用一整个批量的数据进行梯度下降计算

第二周
1.1-1.4多个input features
符号表示
一些定义,见下图

multible linear regression
不叫multivariate regression

向量化计算dot(w,b)



多元线性回归的梯度下降法
更新

正规方程normal equation
被用于机器学习库并调用线性回归,被用于寻找w和b的方法

2.1-2.6 参数处理
特征缩放feature scaling
对于feature ——input x 的处理
好像就是特征的归一化处理。
由于大小不同,导致最后椭圆成扁平状。


归一化三种方法:
按最大值归一化

mean normalization(均值归一化)
u为均值,即平均数。

Z-score normalization
分母从mean normalization中的max-min
变成了标准差

learning curve(学习曲线)
判断何时收敛的方法之一,另外一种是自动收敛测试用epsilon。
iteration:迭代次数

ALpha选取
当出现上面两张图时,可能是因为learning rate too big。
通过设置非常小的ALpha,来判断是代码错误还是学习率太大。
如果最后J曲线一直下降,则是学习率太大,
否则可能是代码错误。

如何选择

feature engineering特征工程
根据已有的特征来选取新特征,如下面的房屋面积的选取

多项式回归polynomial regression
顾名思义,多项式回归,x1−>x2−>x3x^1->x^2->x^3x1−>x2−>x3
值得注意的是,此时尤其需要进行feature scaling

第三周——分类问题
学习分类问题classification
1.1-3.1 logistic regression
引入
含义
binary classification:二元分类
class = category 类

为什么线性回归不适合classification
如下图,最右侧的X导致出现了错误的分类,而且错的很离谱。
红框内展示了下几节要讲的东西,逻辑回归和决策边界。

定义
sigmoid函数

对应,在最外层加入sigmoid函数(有点像激活函数),就是逻辑回归算法


decision boundary
关于什么时候分类为0,什么时候分类为1.以阈值0.5为例进行简单的数学推导。

用两个特征为例,决策边界就是z等于0的时候(阈值为0.5)

非线性的例子,方法相同。


cost function for logistic regression(loss function)
均方误差不适用与logistic regression。
loss funcion:单个样本的损失函数

举一个新的loss function的例子,如下。
可以看到,当真实值为1,预测值也为1时,loss趋近于0
当真实值为1,预测的f取值0.1时,对应的y-hat到了正无穷,loss趋近无穷

当真实值为0,原理相同。


simplified cost function
首先简化loss function

接下来简化cost function
QA:关于为什么选择这个loss funcion:
A:使用最大似然估计从统计中推导而来


运用梯度下降
求导数,建议手推一次

两者看起来一样,但是实际上完全不同

和线性回归的处理方法相似:
包括学习曲线、向量化、feature scaling

4.1-4.5 过拟合和正则化
overfitting
欠拟合:underfitting, high bias(高偏差)
泛化generalization
过拟合: overfitting, high variance(高方差)
回归:regression的例子

分类问题。

解决过拟合的方法
方法一:收集更多的训练数据。

方法二:收集更少的数据特征:不要用太多的多项式特征。

方法三:正则化
一个比方法二更加松的限制方法,可以看李沐的相关介绍。
能保留所有特征,只是防止特征过大。
正则化只对W进行限制,对b限制或者不限制没有没有太大区别。

总结:三个方法。

正则化
定义和性质
举例子,在cost function中加入额外式子——下列红框,作为新的cost function,会使得w3和w4权重减小。

lambda:入,正则化参数
红框可加可不加

lambda的选择,过大或过小结果都不好。

regularized Linear Regression
比之前多了一个导数项。

深入理解含义。
可以看到,每次更新wj乘以一个略微小的数来进行迭代更新,收缩了wj的值


推导过程。

regularized logistic regression

深入理解含义。

第二课 深度学习
四周课程简介

第一周 Neural network基础
1.1-2.3 什么是Neural networks
历史


概念
affordability:可负担性;awareness:知名度;perceived quality:高质量
input layer
hidden layer
output layer

考虑这个例子,在hidden layer(假设只有一层)到output layer之间,就是一层logistic regression。
从这个角度来说,神经网络可以学习自身的特征,并进一步做出更准确的预测。(特征工程),神经网络相当于可以学习,自己做特征过程


多重隐藏层的神经网络,也叫多层感知器(multilayer perception)
人脸识别的例子
输入向量X

关于识别过程的理解。第一个隐藏层可能在识别边缘,如线等;第二个隐藏层可能是识别一个鼻子或者眼睛,第三最后检测面部与不同面部形状的对应程度。
也可以对应不同大小的特征,第一个找小的,第二个找大一点,第三更大。

Neural network layer
可以看到用上标方括号表示所属层,
可以看到第一层输出了a[1]a^{[1]}a[1]

我们查看第二层,即输出层,放大如下,最终输出a[2]a^{[2]}a[2]

最后得到结果为0.84,根据设置可知结果为1。

complex neural network
神经网络层数:包括输出层和隐藏层,不包括输入层
如下图,层数为4

关于上下标的理解
上标代表层layer
下标代表该层的某个单元j (units)
a[0] = input x
激活函数

forward porpagation(前向传播)
识别0和1。




由于从a1->a2->a3,所以叫前向传播
3.1- neutal networks代码实现(TensorFlow)
举例
以TensorFlow为例。由于主要学pytorch,该部分了解即可。

另外一个例子。

data in TensorFlow and Numpy
吴恩达喜欢在numpy上处理数据,然后转换到TensorFlow上进行计算,最后再转换成numpy的数据形式。
a1.numpy()

bulid a neural network
如何定义层数
如何定义model
定义输入数据x,y
定义训练器和拟合函数(下周讲)
预测新的值(model.predict(x_new))

另外一个例子

另外一种写法

detail of code
关于第一层的a[1]如何获得

第二层的计算

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)