cs229 斯坦福机器学习笔记(一)-- 入门与LR模型

这篇博客介绍了斯坦福大学cs229课程的机器学习入门知识,聚焦于线性回归和逻辑回归。内容涵盖梯度下降算法、正规方程和牛顿法在线性回归中的应用,以及逻辑回归的基本概念。同时,讨论了实践中如Coursera课程中的成本函数差异、批量梯度下降与随机梯度下降的区别,以及特征缩放的重要性。附录部分还提到了成本函数的概率解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

说到机器学习,很多人推荐的学习资料就是斯坦福Andrew Ng的cs229,有相关的 视频讲义。不过好的资料 != 好入门的资料,Andrew Ng在coursera有另外一个 机器学习课程,更适合入门。课程有video,review questions和programing exercises,视频虽然没有中文字幕,不过看演示的讲义还是很好理解的(如果当初大学里的课有这么好,我也不至于毕业后成为文盲。。)。最重要的就是里面的programing exercises,得理解透才完成得来的,毕竟不是简单点点鼠标的选择题。不过coursera的课程屏蔽很一些比较难的内容,如果觉得课程不够过瘾,可以再看看cs229的。这篇笔记主要是参照cs229的课程,但也会穿插coursera的一些内容。
接触完机器学习,会发现有两门课很重要,一个是概率统计,另外一个是线性代数。因为机器学习使用的数据,可以看成概率统计里的样本,而机器学习建模之后,你会发现剩下的就是线性代数求解问题。
至于学习资料,周志华最新的《机器学习》西瓜书已经出了,肯定是首选!以前的话我推荐《机器学习实战》,能解决你对机器学习怎么落地的困惑。李航的《统计学习方法》可以当提纲参考。cs229除了lecture notes,还有session notes(简直是雪中送炭,夏天送风扇,lecture notes里那些让你觉得有必要再深入了解的点这里可以找到),和problem sets,如果仔细读,资料也够多了。

线性回归 linear regression

  通过现实生活中的例子,可以帮助理解和体会线性回归。比如某日,某屌丝同事说买了房子,那一般大家关心的就是房子在哪,哪个小区,多少钱一平方这些信息,因为我们知道,这些信息是"关键信息”(机器学习里的黑话叫“feature”)。那假设现在要你来评估一套二手房的价格(或者更直接点,你就是一个卖房子的黑中介,嘿嘿),如果你对房价一无所知(比如说房子是在非洲),那你肯定估算不准,最好就能提供同小区其他房子的报价;没有的话,旁边小区也行;再没有的话,所在区的房子均价也行;还是没有的话,所在城市房子均价也行(在北京有套房和在余杭有套房能一样么),因为你知道,这些信息是有“参考价值”的。其次,估算的时候我们肯定希望提供的信息能尽量详细,因为我们知道房子的朝向,装修好坏,位置(靠近马路还是小区中心)是会影响房子价格的。
    其实我们人脑在估算的过程,就类似一个“机器学习”的过程。
a)首先我们需要“训练数据”,也就是相关的房价数据,当然,数据太少肯定不行,要尽量丰富。有了这些数据,人脑可以“学习”出房价的一个大体情况。因为我们知道同一小区的同一户型,一般价格是差不多的(特征相近,目标值-房价也是相近的,不然就没法预测了);房价我们一般按平方算,平方数和房价有“近似”线性的关系。
b)而“训练数据”里面要有啥信息?只给你房子照片肯定不行,肯定是要小区地点,房子大小等等这些关键“特征”
c)一般我们人肉估算的时候,比较随意,也就估个大概,不会算到小数点后几位;而估算的时候,我们会参照现有数据,不会让估算跟“训练数据”差得离谱(也就是下面要讲的让损失函数尽量小),不然还要“训练数据”干嘛。 计算机擅长处理数值计算,把房价估算问题完全可以用数学方法来做。把这里的“人肉估算”数学形式化,也就是“线性回归”。

1.我们定义线性回归函数(linear regression)为: 


然后用h(x) 来预测y

最简单的例子,一个特征size,y是Price,把训练数据画在图上,如下图。(举最简单的例子只是帮助理解,当特征只有一维的时候,画出来是一条直线,多维的时候就是超平面了)

这里有一个问题,如果真实模型不是线性的怎么办?所以套用线性回归的时候是需要预判的,不然训练出来的效果肯定不行。这里不必过于深究,后面也会介绍怎么通过预处理数据处理非线性的情况。

2.目标就是画一条直线尽量靠近这些点,用数学语言来描述就是cost function尽量小。

为什么是平方和? 直接相减取一下绝对值不行么, | h(x)-y |  ? (后面的Probabilistic interpretation会解释,这样求出来的是likelihood最大。另外一个问题, | h(x)-y |大的时候 ( h(x)-y )^2 不也是一样增大,看上去好像也一样?! 除了后者是凸函数,好求解,所以就用平方和? 不是的,单独一个样本纵向比较确实一样,但别漏了式子前面还有一个求和符号,这两者的差异体现在样本横向比较的时候,比如现在有两组差值,每组两个样本,第一组绝对值差是1,3,第二组是2,2,绝对值差求和是一样,4=4, 算平方差就不一样了,10 > 8。其实,x^2求导是2x,这里的意思就是惩罚随偏差值线性增大,最终的效果从图上看就是尽可能让直线靠近所有点)

3 然后就是怎么求解了。 如果h(x)=y那就是初中时候的多元一次方程组了,现在不是,所以要用高端一点的方法。以前初中、高中课本也有提到怎么求解回归方程,都是按计算器,难怪我一点印象都没有,囧。。还以为失忆了
notes 1里面介绍3种方法
1.gradient descent (梯度下降)
a.batch gradient descent
b.stochastic gradient descent (上面的变形)
2.the normal equations
3.Newton method(Fisher scoring)
<think>好的,我现在需要帮助用户找到适合初学者的深度学习项目或教程。用户之前已经得到了些推荐,但可能还需要更多具体的例子或者更详细的指导。首先,我得回顾下用户提供的引用内容,看看有没有相关的信息可以利用。 引用[1]提到深度学习工作站的配置,这可能对设置环境有帮助,但用户现在需要的是项目或教程,所以这部分可能暂时用不上。引用[2]里提到了计算机视觉的免费开源项目,特别是DeepPose和情感识别的项目,这些是适合初学者的内容。引用[3]讨论了深度强化学习的应用,但用户可能还没有到这个阶段,不过如果用户对强化学习感兴趣,也可以考虑推荐。 接下来,我需要整理适合初学的项目类型。通常,图像分类、手写数字识别、简单的自然语言处理任务都是不错的起点。比如MNIST数据集非常经典,教程也很多。另外,引用[2]中的姿势估计和情感识别项目可以作为进阶的计算机视觉项目。 然后,考虑教程资源。Kaggle的课程和Fast.ai的实践教程都很适合新手,因为它们强调动手操作。官方文档如PyTorch和TensorFlow的教程也是权威且系统的学习路径。 用户可能需要明确的步骤,比如从安装环境开始,逐步完成项目。因此,分点列出项目实例和教程资源会比较清晰。同时,加入些学习建议,比如先学基础再实践,参社区讨论,这些都能帮助用户更好地入门。 最后,生成相关问题,引导用户深入思考或解决可能遇到的疑问,比如数据集选择、框架比较和提升模型性能的方法。这样不仅回答了当前问题,还预见了用户后续可能的需求。</think>以下是为您整理的适合初学者的深度学习入门项目及教程推荐,包含基础实践项目和参考学习资源: ### 、基础实践项目推荐 1. **手写数字识别(MNIST)** 使用$y=softmax(Wx+b)$构建全连接网络 - 目标:通过$28\times28$像素图像识别0-9数字 - 框架:PyTorch/TensorFlow实现,代码量约50行 - 延伸:可尝试卷积神经网络(CNN)版本提升准确率 2. **CIFAR-10图像分类** 数据集包含$32\times32$像素的10类物体 ```python model = Sequential([ Conv2D(32, (3,3), activation='relu', input_shape=(32,32,3)), MaxPooling2D((2,2)), Flatten(), Dense(10, activation='softmax') ]) ``` 3. **电影评论情感分析** 使用IMDB数据集学习文本分类 - 技术点:词嵌入(Embedding)+ LSTM网络 - 评估指标:准确率(Accuracy)和F1值 4. **DeepPose姿势估计入门** 基于Google研究论文的简化实现[^2] - 输入:单张人物图像 - 输出:人体关键点坐标 - 建议先使用预训练模型微调 5. **Flappy Bird游戏AI** 通过深度Q学习(DQN)实现自动游戏 ```python class DQNAgent: def __init__(self, state_size, action_size): self.model = self._build_model() def _build_model(self): model = Sequential() model.add(Dense(24, input_dim=state_size, activation='relu')) model.add(Dense(24, activation='relu')) model.add(Dense(action_size, activation='linear')) return model ``` ### 二、教程资源推荐 | 资源名称 | 特点 | 学习周期 | |---------|------|---------| | [Fast.ai《面向程序员的深度学习》](https://course.fast.ai)| 实践驱动教学,提供云端环境 | 4周 | | [吴恩达《深度学习专项课程》](https://www.coursera.org/specializations/deep-learning) | 系统理论+编程作业 | 12周 | | [PyTorch官方教程](https://pytorch.org/tutorials/) | 含交互式Notebook | 按模块学习 | | [Kaggle Learn](https://www.kaggle.com/learn/deep-learning) | 配套GPU资源,即时实践 | 6小时 | | [CS230斯坦福课程笔记](https://stanford.edu/~shervine/teaching/cs-230/) | 知识点速查手册 | 长期参考 | ### 三、学习建议 1. **环境搭建** 根据引用[1]建议,初学阶段可使用Google Colab免配置环境,后期再考虑本地配置 ```bash # 本地环境示例 conda create -n dl_env python=3.8 conda install pytorch torchvision -c pytorch ``` 2. **学习路径建议** ```mermaid graph LR A[Python基础] --> B[机器学习基础] B --> C[深度学习理论] C --> D[框架入门] D --> E[项目实践] E --> F[论文复现] ``` 3. **社区资源** - 参加Kaggle竞赛(如Titanic生存预测) - 在Papers With Code查找开源实现 - 关注arXiv每日更新的最新论文
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值