首页 > 其他分享 >吴恩达深度学习deeplearning.ai学习笔记(一)2.1 2.2 2.3 2.4

吴恩达深度学习deeplearning.ai学习笔记(一)2.1 2.2 2.3 2.4

时间:2024-08-02 13:54:01浏览次数:17  
标签:吴恩达 函数 特征向量 ai 样本 矩阵 损失 deeplearning 定义

2.1逻辑分类/二元分类 logistic regression

经典问题:

假如你有一张图片作为输入,你想输出能识别此图的标签,也就是:如果是猫,输出1;如果不是猫,输出0。这是老吴最喜欢的猫检测器;

我们用y来表示输出的结果标签;

一张图片在计算机中是如何表示的?计算机保存一张图片,要保存三个独立矩阵,分别对应图片中红、绿、蓝三个颜色通道;如果输入图片是64$\times$64像素的,就会有3个64$\times$64的矩阵,分别对应图片中的红、绿、蓝三个通道的像素亮度;

要把这些像素亮度值放进一个特征向量里,就先定义一个特征向量x,然后将红色像素矩阵从第一行第一列开始放入,一行放完放下一行,再放绿色矩阵、蓝色矩阵的;

得到的特征向量是一个列向量,很长,它将图片中所有红绿蓝像素强度值都列出来,向量x的维度将会是64\times64\times3=12288,用n_x来表示输入的特征向量x的维度。此处n_x=12288

二分分类问题的目标是训练出一个分类器,它以图片的特征向量x作为输入,预测输出的结果标签y是1还是0,也就是预测图片中是否有猫。

符号规定:

1. 用一对(x,y)表示一个单独的样本,xn_x维的特征向量,y的值为0或1,即x\in \mathbb{R}^{n_x},y\in {\{0,1\}}

2. 训练集由m个训练样本构成,( x^{(1)},y^{(1)} )表示样本1的输入和输出,( x^{(2)},y^{(2)} )表示样本2的,……,( x^{(m)},y^{(m)} )表示最后一个样本m的输入和输出;

3. 如果是训练样本的个数,可以写为m=m_{train};如果是测试样本的个数,可以写为m=m_{test}

4. 为了用更紧凑的符号表示训练集,定义一个大写矩阵X,由以下构成:

X=\begin{bmatrix} x^{(1)} & x^{(2)} & \cdots & x^{(m)} \end{bmatrix}

因为x^{(1)} ,x^{(2)} ,x^{(3)} ,\cdots都是列向量,所以才如此横向堆放;

Xm列,n_x行,也称矩阵高度是n_x

在Python中,X.shape命令用于输出矩阵X的维度,即(n_x,m)

5. 定义一个大写矩阵Y,由以下组成:

Y=\begin{bmatrix} y^{(1)} & y^{(2)} & \cdots & y^{(m)} \end{bmatrix}

Y是一个1\times m的矩阵,即Y.shape=(1,m)

2.2 logistic回归

给定已知的输入特征向量x,你需要一个算法可以给出一个预测值\hat{y},可以说是对y的预测,正式地讲\hat{y}是一个概率:当输入特征x满足条件时,y=1的条件概率,即:

\hat{y}=P{\{y=1|x\}}

如果x是图片,你希望\hat{y}能告诉你这是一张猫图的概率;

参数是w(一个同样为n_x维的列向量)和b(一个实数);

\hat{y}和参数w,b之间的关系是怎样的呢?

假设\hat{y}=w^Tx+b,这样满足\hat{y}是一个数,但是并未满足\hat{y}是一个在[0,1]之间的概率的要求,一般把这种等式叫线性回归;

所以要引入\sigma函数:

\sigma(z)=\frac{1}{1+e^{-z}}

\lim_{z \to +\infty }\sigma(z)=1,\lim_{z \to -\infty }\sigma(z)=0

定义\hat{y}=\sigma(w^Tx+b)就确保了\hat{y}介于0和1之间;

并且\sigma函数的导数恒大于0,所以是单增的;

总之,logistic回归里你要做的就是学习参数w,b

2.3 logistic回归中的损失函数

为了让模型通过学习参数来调整参数,要给一个有m个样本的训练集:

\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),(x^{(3)},y^{(3)}),\cdots,(x^{(m)},y^{(m)}) \}

希望通过训练集找到合适的参数w,b,来得到你对训练集的预测值\hat{y}^{(i)},i=1,2,3,\cdots,m,使它能接近于训练集的标签值y^{(i)},即尽可能让\hat{y}^{(i)}\approx y^{(i)};这里右上角带圆括号有数字的上标表示这是第几个样本的数据,后面会有方括号和花括号,要注意区分,剧透一下方括号表示是神经网络第几层的参数,花括号表示mini-batch中第几个子集的数据;

z^{(i)}=w^Tx^{(i)}+b

\hat{y}^{(i)}=\sigma(w^Tx^{(i)}+b)=\sigma(z^{(i)})

损失函数 Loss function L(\hat{y},y)应该如何定义?

如果定义为L(\hat{y},y)=\frac{1}{2}(\hat{y}-y)^2,当你学习这些参数时,后面讨论优化问题时会发现函数是非凸的,最后会得到很多个局部最优解,在使用梯度下降法时可能找不到全局最优值;当然有人也去研究了非凸函数的优化,建议看看老吴的采访视频,有很多启发;

我们通过定义损失函数来衡量你的预测输出值\hat{y}和实际值y有多么接近,一般设计成损失函数的值越小,代表接近效果越好,常用的logistic回归的损失函数定义为:

L(\hat{y},y)=-[yln\hat{y}+(1-y)ln(1-\hat{y})]

一个粗浅的理解是枚举,如果y=1,则L(\hat{y},y)=-ln\hat{y},训练时会往损失函数降低的方向前进,当损失函数尽量小时,ln\hat{y}会尽量大,\hat{y}就会尽量大,而它本身是一个值域为[0,1]的概率,就会使\hat{y}接近于1,这样就实现了\hat{y}\approx y;如果y=0,则L(\hat{y},y)=-ln(1-\hat{y}),损失函数最小化会使得\hat{y}尽量小,也就使得\hat{y}接近于0,同样实现了\hat{y}\approx y;后面会有一节专门分析损失函数是如何设计出来的;

损失函数是在单个样本里定义的,它只衡量在单个训练样本上算法的表现;

成本函数 Cost function J(w,b)则衡量在全体训练样本上算法的表现,定义为:

J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(\hat{y}^{(i)},y^{(i)})

J(w,b)=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}ln\hat{y}^{(i)}+(1-y^{(i)})ln(1-\hat{y}^{(i)})]

所以,要寻找合适的w,b使得J(w,b)最小。

2.4梯度下降法

一个直观的理解是当w简化成一维向量时,J(w,b)就是在以w,bx,y轴,而z轴代表高度的一个空间曲面,并且是像碗一样的凸曲面,所以理论上来说碗底存在一个点(w,b)能够使J(w,b)达到最小值,这个最小值点也叫全局最优解;

我们要做的就是初始化w,b,然后用梯度下降法一步一步去逼近这个全局最优解,一般是沿最陡的下坡方向去走每一步;在高数里,最陡的方向就是所谓的梯度;

为了简单起见,先忽略参数b,这样可以把J(w,b)看成是w的函数J(w),并且假定w是一维向量,画在一个二维图中:

只要重复进行以下运算,就能让任何初始点不断向最低点靠近:

w:=w-\alpha dw

其中,dw是编程时的变量名,它真正的含义是损失函数对w的导数:

dw=\frac{\mathrm{d} }{\mathrm{d} w}J(w)

\alpha是学习率,\alpha >0,它控制的是每一次梯度下降法的步长,也就是图中一个箭头走过多远;

能实现的原因:如果初始点在最低点右边,那么导数dw>0,进行一次运算就会让w变小从而靠近最低点;如果初始点在最低点左边,那么导数dw<0,进行一次运算就会让w变大从而靠近最低点;

推广到J(w,b)中就可以轻松得到梯度下降法的公式:

w:= w-\alpha dw

b:= b-\alpha db

注意这里的dw,db含义改变了,指的是损失函数分别对w,b的偏导数:

dw=\frac{\partial }{\partial w}J(w,b)

db=\frac{\partial }{\partial b}J(w,b)

标签:吴恩达,函数,特征向量,ai,样本,矩阵,损失,deeplearning,定义
From: https://blog.csdn.net/weixin_66188523/article/details/140834894

相关文章

  • GitHub Models服务允许开发人员免费查找和试用AI模型
    今天,GitHub宣布推出一项新服务–GitHubModels,允许开发人员免费查找和试用人工智能模型。它将领先的大型和小型语言模型的强大功能直接带给GitHub的1亿多用户。GitHub模型将提供对领先模型的访问,包括OpenAI的GPT-4o和GPT-4omini、微软的Phi3、Meta的Llama3.......
  • 【AI绘画】Black Forest Labs 发布 Flux: 文本到图像模型的下一次飞跃
    Prompt:Extremeclose-upofasingletigereye,directfrontalview.Detailedirisandpupil.Sharpfocusoneyetextureandcolor.Naturallightingtocaptureauthenticeyeshineanddepth.Theword“FLUX”ispaintedoveritinbig,whitebrushstrok......
  • Chrome 桌面版新增 AI 功能,能通过提问搜索你的浏览器历史记录
    谷歌将在Chrome桌面版中推出新的Gemini功能,包括桌面版GoogleLens、购物标签对比功能和自然语言历史搜索。在手机上推出并不断发展的GoogleLens功能,现在终于要在Chrome桌面版上线。它将在地址栏和三点菜单中出现,用户点击后可以选择页面上的一部分,提出更多问题以获取......
  • VulnhubAI-web 1.0靶机详解
    项目地址https://www.vulnhub.com/entry/ai-web-1,353/实验过程将下载好的靶机导入到VMware中,设置网络模式为NAT模式,然后开启靶机虚拟机使用nmap进行主机发现,获取靶机IP地址nmap192.168.47.1-254根据对比可知DC-8的一个ip地址为192.168.47.135扫描Ai-Web......
  • 视频驱动数字人形象,LivePortrait最新模型分享
    LivePortrait是一个由快手可灵团队开发的高级人工智能肖像动画框架,其主要功能是使静态照片中的面部能够模仿动态视频中的表情变化,从而让照片看起来像是活生生的人在做表情。LivePortrait采用了基于隐式关键点的方法,而不是传统的扩散方法,来从单一的源图像生成高质量且生动的视......
  • 设备管理系统AI大模型应用RAG案例
    设备管理系统-AI大模型应用RAG案例设备管理系统功能   设备管理系统是为企业设备管理设计的软件,它通过数字化和自动化的方式,帮助企业提高管理效率和准确性。主要功能点:设备档案管理:帮助企业建立完整的设备档案,记录设备基本信息,如名称、型号、规格、供应商等,便于查询和管理。设......
  • Oracle归档日志异常增长问题的排查过程 转载 : https://blog.csdn.net/3moods/article
    Oracle归档日志是Oracle数据库的重要功能,用于将数据库的重做日志文件(RedoLog)保存到归档日志文件(ArchiveLog)中。归档日志的作用是提供数据库的备份和恢复功能,以及支持数据库的持续性和数据完整性。当数据库处于归档模式时,数据库引擎会将已经写满的重做日志文件保存到归档日志文件......
  • 商业银行国际结算规模创新高,合合信息AI助力金融行业智能处理多版式文档
    随着我国外贸新业态的快速增长,银行国际结算业务在服务实体经济发展、促进贸易投资便利化进程中发挥了越来越重要的作用。根据中国银行业协会近日发布的《中国贸易金融行业发展报告(2023—2024)》,2023年我国主要商业银行国际结算规模再创历史新高,达到11.57万亿美元,较上一年增幅4.4%。......
  • 使用LangChain访问个人数据第一章-简介
    需要学习提示词工程的同学请看面向开发者的提示词工程需要学习ChatGPT的同学请查看搭建基于ChatGPT的问答系统需要学习LangChian开发的同学请查看基于LangChain开发应用程序正文在大数据时代,数据价值逐渐凸显,打造定制化、个性化服务,个人数据尤为重要。要开发一个具备......
  • Langchain-Chatchat3.1——搜索引擎bing与DuckDuckGo
    Langchain-Chatchat3.1——搜索引擎bing与DuckDuckGo1.前提是咱们的Chatchat服务一起部署好了,可以参考Langchain-Chatchat3.1版本docker部署流程——知识库问答2.搜索引擎DuckDuckGo:该搜索引擎不需要key,但是需要全球上网服务,挂代理。pipinstall-Uduckduckgo_search......