COMP9417-机器学习课业2:逻辑回归的数值实现
引言在家庭课业1中,我们考虑了梯度下降(和坐标下降),以最小化正则化损失函数。在这篇课业中,我们考虑一种称为牛顿算法的替代方法。我们将首先在一个简单的玩具问题上运行牛顿算法,然后在一个真实的数据分类问题上从头开始实现它。我们还研究了逻辑回归的对偶版本。
积分分配总共有30分。
•问题1 a):1分
•问题1 b):2分
•问题2 a):3分
•问题2 b):3分
•问题2 c):2分
•问题2 d):4分
•问题2 e):4分
•问题2 f):2分
•问题2 g):4分
•问题2 h):3分
•问题2 i):2分
要提交的内容
•单个PDF文件,其中包含每个问题的解决方案。对于每个问题,以文本和要求的图表的形式提供您的解决方案。对于一些问题,您将被要求提供用于生成答案的代码的屏幕截图——只有在明确要求时才包括这些。
•.py文件包含您用于项目的所有代码,应在单独的.zip文件中提供。此代码必须与报告中提供的代码相匹配。
•您可能会因未遵守这些说明而被扣分。
•你可能会因为表现不佳/格式不当而被扣分。请保持整洁,并明确你的解决方案。如有必要,在新的页面上开始每个问题。
•您不能提交Jupyter笔记本;这将得到一个零的标记。这并不能阻止你在笔记本上开发代码,然后将其复制到.py文件中,或者使用nbconvert或类似工具。
•我们将建立一个Moodle论坛,回答有关此课业的问题。在发布新问题之前,请阅读现有问题。在发布问题之前,请先在网上做一些基础研究。请仅发布澄清问题。任何被视为寻求答案的问题都将被忽略和/或删除。
•请查看Moodle公告以了解此规范的更新。您有责任查看有关规范的公告。
•请自己完成课业,不要在课程中与其他人讨论您的解决方案。对问题进行一般性讨论是可以的,但您必须写出自己的解决方案,并确认您是否在提交的材料中讨论了任何问题(包括他们的姓名和zID)。
•像往常一样,我们监控所有在线论坛,如Chegg、StackExchange等。在这些网站上发布家庭课业问题相当于抄袭,并将导致学术不端。何时何地提交
•预产期:第7周,2024年3月25日星期一下午5点。请注意,论坛将不会在周末受到积极监控。
•逾期提交将导致每天可达到的最高成绩的5%的罚款。例如,如果你取得了80/100的成绩,但你迟到了3天,那么你的最终成绩将是80−3×5=65。逾期超过5天的提交将被打0分。
•提交必须通过Moodle完成,无一例外。
第2页
问题1。牛顿方法导论
注意:在整个问题中,除非问题中明确要求,否则不要使用所讨论的任何算法的任何现有实现。使用现有的实现可能会导致整个问题的分数为零。在家庭课业1中,我们研究了梯度下降(GD),它通常被称为一阶方法。在这里,我们研究了一种称为牛顿算法的替代算法,它通常被称为二阶方法。粗略地说,二阶方法同时使用一阶导数和二阶导数。一般来说,二阶方法比一阶方法准确得多。给定一个二次可微函数g:R→ R、 牛顿方法根据以下更新规则迭代生成序列{x(k)}:
x(k+1)=x(k)−g′(x(k,)),k=0,1,2,。。。,(1) g′′(x(k))
例如,考虑函数g(x)=12 x2−sin(x),初始猜测x(0)=0。则g′(x)=x−cos(x),且g′′(x)=1+sin(x),
因此我们有以下迭代:
x(1)=x(0)−x(0
x(2)=x(1)−x(1
x(3)=0.739112890911362。
这种情况一直持续到我们终止算法(为了您自己的利益,作为一个快速练习,编写代码,绘制函数和每个迭代)。我们在这里注意到,在实践中,我们经常使用一种不同的更新,称为阻尼牛顿法,定义如下:
x(k+1)=x(k)-αg′(xk),k=0,1,2,。。。。(2) g′′(xk)
这里,与GD的情况一样,步长α具有“抑制”更新的效果。现在考虑两次可微函数f:Rn→ R.在这种情况下,牛顿步骤现在是:
x(k+1)=x(k)−(H(x(k,。。。,3.
其中H(x)=Ş2f(x)是f的Hessian。启发式地,该公式将方程(1)推广到具有向量输入的函数,因为梯度是一阶导数的模拟,而Hessian是二阶导数的类似。
(a) 考虑函数f:R2→ R由f(x,y)=100(y−x2)2+(1−x)2定义。
使用mplot3d创建函数的三维图(例如,请参见lab0)。x轴和y轴的范围均为[−5,5]。此外,计算f的梯度和Hessian。提交内容:单个绘图,用于生成绘图的代码,梯度和Hessian计算以及所有工作。将代码副本添加到解决方案.py
(b) 仅使用NumPy,使用x(0)=(−1.2,1)T的初始猜测,实现(无阻尼)牛顿算法,以找到上一部分中函数的最小值。当