新手如何开始学深度学习?别着急,看看别人走过的路先

2024-06-21 09:48

本文主要是介绍新手如何开始学深度学习?别着急,看看别人走过的路先,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Arkar Min Aung

编译:ronghuaiyang

前戏

新手如何开始学深度学习,这个问题很难回答,每个人似乎都有自己的一套方法,在开始之前,先看看别人是怎么做的,也许会对自己有所启发。

刚开始学深度学习的时候,一定要像婴儿学步一样,慢慢的小步走。

很多人问我如何开始机器学习和深度学习。在这里,我整理了一个我使用过的资源列表,以及我第一次学习深度学习时所走过的路。

免费课程

从Andrew Ng在Coursera上的机器学习课程开始(https://www.coursera.org/learn/machine-learning)。这门课程会教会你机器学习的一些诀窍,并且会提高你的线性代数技巧。你一定要好好作业,在完成课程后,你会掌握机器学习的概念,例如:线性回归、逻辑回归、支持向量机、神经网络和k均值聚类。你也有机会建立一个推荐系统来玩玩。这会开阔你的眼界,让你更有信心进入机器学习和深度学习的领域。但是要知道,还有许多其他重要的概念,这门课程无法涵盖。所以,在这门课结束后,要准备好拓宽你的知识面。如果你在完成吴博士的课程后非常兴奋,你应该去看看他的其他课程,它是Coursera上深度学习专业课程的一部分。

Fast.ai提供免费的在线深度学习课程,课程分为两个部分:

  • 深度学习第一部分:Practical Deep Learning for Coders

  • 深度学习第二部分:Cutting Edge Deep Learning for Coders

在这些课程之后,您可能已经准备好学习Hinton的机器学习神经网络了。Hinton的课程相对于前面提到的课程来说比较难,因为课程很枯燥,而且包含了更多的数学概念。如果你觉得你还不能解决这个问题,不要慌!停一段时间,先做数学部分(在下一节中描述),然后再回来。这次你一定能解决这个问题!记住,决心,决心,决心,更多的决心。

数学

深度学习当然需要你对线性代数、微分学和向量有很好的掌握。如果你想快速复习一些基本的线性代数并开始写代码,强烈推荐Andrej Karpathy的黑客神经网络指南。我发现hadrienj 's notes在《深度学习》一书中对实际了解底层数学概念,以及如何使用Python (Numpy)非常有用。如果你喜欢从视频中学习,3blue1brown有一个关于线性代数微积分, 神经网络以及其他数学相关概念的非常好的视频。在非卷积问题上自己实现一个基于cpu的反向传播算法也是真正理解反向传播工作原理的好方法。

来点真格的

如果你想提高你的机器学习知识,并准备认真对待(我的意思是研究生水平的认真对待),去研究一下 Learning From Data ,这是一本加州理工教授写的书。准备好做所有的数学运算。这可能有点挑战性,但是你要是读完了而且做完了作业的话,绝对是值得的。我认为,教科书很难捕捉到目前深度学习的状态,因为这一领域的发展速度非常快。但最受欢迎的教科书应该是 Goodfellow, Bengio, 和Courville的《深度学习书》(http://www.deeplearningbook.org/)。它可以在网上免费下载,所以你也可以一章一章地下载,一章一章地阅读课本。

论文,论文,论文,我再也追不上它们

是的,深度学习的知识主要来自论文,而这些论文的发表速度在当今是非常快的。Reddit是一个很好的起点。订阅/r/machinelearning/r/deeplearning。不过我觉得机器学习的reddit版块更有用。ArxivSanity是一个查看与你正在寻找的论文相关的论文的好地方。在深度学习中,阅读论文时要做的一件重要的事情就是做好文献综述。做一个好的文献回顾可以让你更好地了解事物是如何发展的。解决文献综述问题的一种方法是安装谷歌Scholar Chrome扩展并搜索你想查找的论文。你可以跟随“相关文章”和“被引用”来跟随之前的工作以及基于那篇论文的新工作。阅读论文的一个好习惯是在论文中画出概念的思维导图。

640?wx_fmt=png

当我阅读一篇关于“few-shot learning”的论文时,我画出了这张思维图。

思维导图的优点是它是一种很好的方法来跟踪文章中提出的概念之间的关系。我发现思维导图对于跟踪相关文献以及它们与我正在阅读的论文之间的关系非常有用。思维导图能让我对一篇论文有一个清晰的认识,也能让我在读完之后对论文有一个很好的总结。

我发现Twitter(国内就是微博,公众号了吧)对于跟踪机器学习和深度学习研究非常有用。你可以从跟踪ML/DL领域中的知名人员开始,然后从那里开始扩展。因为我经常转发关于对抗机器学习和自动驾驶汽车的研究,你也可以关注我的twitter(关注我的公众号吧?),把它当作你的feed。你能做的就是查看我转发过的人,查看他们的推特,关注他们圈子里的其他研究人员。一旦你提供了足够的数据,Twitter也会推荐优秀的人去关注,也就是关注足够多的ML/DL研究者。

Kaggle

Kaggle实在是太有用了。我强烈建议你尝试Kaggle竞赛,即使你进入前100名的机会很小。Kaggle竞赛的价值在于社区。阅读kernel并从中汲取好的实践经验。阅读评论并参与讨论。在那里你会学到很多东西。你会了解人们如何进行探索性数据分析,以及如何处理丢失数据、不平衡数据等各种情况。Kaggle竞赛中有很多知识。

灵感

机器学习的可视化介绍是一种很好的方法,可以直观地掌握统计学习技术是如何用于识别数据中的模式的。

谷歌的Seedbank是一个获得灵感的伟大资源!看一看这些例子,跟着文献走。

Distill.pub是一个交互式学习DL概念的好地方。我希望Distil出现更多的文章。

冰山一角

除非你把自己所学的付诸实践,否则什么都不重要。ML和DL听起来很神奇,当你自己实现整个pipeline,你会发现也就那样。整个pipeline包括数据来源、数据收集、数据质量评估、数据清理、数据注释、数据预处理、构建工作流、构建模型、调优模型、评估模型、部署模型和重复模型。这些步骤只是整个ML/DL pipeline中的一些步骤。那些已经完成了全面DL工作的人知道尽可能保持整个开发操作的流畅是多么重要。整个数据来源、收集、注释、清理和评估步骤至少占整个项目的60%,而且它们可能是项目中最昂贵的部分之一(除了耗电的GPU !)

总之,ML/DL领域是一个不断发展的领域,你必须张大你的耳朵、睁大你的眼睛,开放你的思想。不要仅仅因为一篇论文/博客/教程/个人/YouTube视频说某一项新技术在某一特定数据集上表现很好就跳到它上面。我看到许多闪亮的新技术来了又去的很快。永远要意识到区分信号和噪音是很重要的。


640?wx_fmt=png

往期精彩回顾


1、深度学习物体检测论文阅读路线图以及官方实现

2、一步一步动画图解LSTM和GRU,没有数学,包你看的明白!

3、论文看吐了没有?做研究的同学瞧一瞧看一看啦,教你读论文:为什么读以及如何读

4、动画图解RNN; LSTM 和 GRU,没有比这个更直观的了!

5、人人都能看得懂的深度学习介绍!全篇没有一个数学符号!


本文可以任意转载,转载时请注明作者及原文地址

640?wx_fmt=jpeg

请长按或扫描二维码关注本公众号

来,给我好看吧640?wx_fmt=gif

这篇关于新手如何开始学深度学习?别着急,看看别人走过的路先的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080888

相关文章

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用