大家好。我是玉峰。今天我想和大家分享的是我自己总结的深度学习的四个步骤,自我总结,难免会有错误,欢迎改正。
[En]
Hello, everyone. I am Yufeng. What I want to share with you today is my own summary of the four steps of deep learning, self-summary, there will inevitably be mistakes, welcome to correct.
老话说得好,我就是玉峰。我希望我分享的文章能帮助你和更多的朋友。欢迎转发或转载!
[En]
As the old saying goes, I am Yufeng. I hope the articles I share can help you and more friends. Welcome to forward or reprint!
目录
前言
深度学习是现在最热门的领域之一,无论是找工作还是科研,只要跟深度学习有关,就越来越受欢迎。因此,越来越多的朋友正在开始和深入学习。
[En]
Deep learning is one of the hottest areas now, whether it is looking for a job or scientific research, as long as it has something to do with deep learning, it is becoming more and more popular. Therefore, more and more friends are getting started and learning deeply.
当然,也可以想学,深入学习在于坚持,因为涉及的知识还很多,不是一下子就能学到的。许多人正在开始和放弃。如果你想学好,你必须坚持下去!
[En]
Of course, you can also want to learn, in-depth learning lies in persistence, because there is still a lot of knowledge involved, which can not be learned at once. * many people are getting started and giving up. If you want to learn well, you must stick to it! *
以下是我对深度学习的四个步骤的总结,当然,第四步是我们很多人无法企及的,做到前三步是很好的。
[En]
The following is my summary of the four steps of deep learning, of course, the fourth step is beyond the reach of many of us, and it is good to achieve the first three steps.
自我总结,如有不对或者欠缺的地方,还望勿喷,也欢迎大佬们多多指教。
第一步:入门
数学基础:
线性代数,概率论,数值计算等三门主要的数学你是否都学习过。
比如线性代数中的 矩阵和向量计算,范数,特征分解,奇异值分解,行列式计算等等。
比如概率论中的 概率分布,边缘概率,条件概率,各种概率分布,期望,方差,协方差,最大似然估计,贝叶斯等等。
比如数值计算中的 梯度优化方法,约束优化,最小二乘等等。
机器学习基础:
一些机器学习中的基本概念你是否了解: 比如过拟合,欠拟合,有监督学习以及相应的支持向量机等一些常见算法,无监督学习以及相应的主成分分析,聚类等一些常见的算法。树模型,随机梯度下降等等。
深度学习基础:
1、神经元(Neuron)
2、权重(Weights)
3、偏差(Bias)
4、激活函数(Activation Function)
5、神经网络(Neural Network)
6、输入/输出/隐藏层(Input / Output / Hidden Layer)
7、MLP(多层感知器)
8、正向传播(Forward Propagation)
9、成本函数(Cost Function)
10、梯度下降(Gradient Descent)
11、学习率(Learning Rate)
12、反向传播(Backpropagation)
13、批次(Batches)
14、周期(Epochs)
15、丢弃(Dropout)
16、批量归一化(Batch Normalization)
17、滤波器(Filters)
18、卷积神经网络(CNN)
19、池化(Pooling)
20、填充(Padding)
21、数据增强(Data Augmentation)
22、循环神经元(Recurrent Neuron)
23、循环神经网络(RNN)
24、消失梯度问题(Vanishing Gradient Problem)
25、激增梯度问题(Exploding Gradient Problem)
26、人工神经网络
27、 BP神经网络
28、L1,L2正则化等一些正则化优化方法,
29、基本的随机梯度下降,动量,Adam的一些优化方法,
等等一些基本概念及知识点。
入门资料
书籍:
《深度学习》by Ian Goodfellow, Yoshua Bengio, Aaron Courville
《机器学习》 by 周志华
《统计学习方法(第二版)》by 李航
《Python 深度学习》by Francois Chollet
《机器学习实战:基于Scikit-Learn和TensorFlow》by Aurélien Géron
《百页机器学习》 by Andriy Burkov
课程选择
吴恩达机器学习,深度学习课程( 关注公众号:羽峰码字,回复"吴恩达"即可获取):https://www.coursera.org/specializations/deep-learning
CMU: 深度学习:http://www.cs.cmu.edu/~rsalakhu/10707/
CMU: 深度学习入门:https://simons.berkeley.edu/talks/tutorial-deep-learning
斯坦福大学:深度学习理论(Stat385):https://stats385.github.io/
斯坦福大学:基于深度学习的自然语言处理(CS224n):
https://www.youtube.com/playlist?list=PL3FW7Lu3i5Jsnh1rnUwq_TcylNr7EkRe6
李飞飞:视觉识别中的卷积神经网络(cs231n):
http://cs231n.stanford.edu/
李宏毅:深度学习(2017):
链接 | https://www.bilibili.com/video/av9770302?from=search&seid=11128120516034980261
李沐:动手学深度学习-pytorch 2021版
链接 | https://www.bilibili.com/video/BV1Fb4y1D7Jt?p=1
网站推荐:
http://www.duozhishidai.com/
https://tensorflow.google.cn/tutorials/keras/classification
https://keras.io/examples
https://keras.io/zh/
https://www.deeplearningbook.org/
此阶段之后应具备的能力:
1. 能够处理小型数据集
2. 能搭建一个简单的网络并能训练一些手写数据集等一些小型数据集
3. 理解一些比如CNN,Resnet,VGG等一些常见的网络。
第二步:进阶
前进一般是找一个方向继续往深走,你不可能一开始就明白所有的方向,所以选择一个方向往深走才是最明智的选择。
[En]
Advance is generally to find a direction to continue to go deep, you can not start to understand all the directions, so choose a direction to go deep is the wisest choice.
深入某一领域
目前深度学习主要有以下几个领域:
1. 计算机视觉
生物特征识别:人脸识别、步态识别、行人ReID、瞳孔识别;
图像处理:分类/分割、分类标注、以图搜图、场景分割、车辆车牌、OCR、AR;
视频分析:安防监控、智慧城市;
2. 自然语言处理
语音识别(Siri、Cortana、讯飞)、文本数据挖掘、文本翻译;
3. 数据挖掘
消费习惯、天气数据、推荐系统、知识库(专家系统);
4. 游戏
角色仿真、AlphaGo(强化学习);
5. 复合应用
无人驾驶、无人机、机器人;
上面选择一个方向入门就行,然后深入研究下去。
此时应该阅读一些专业领域的文献,文献网站推荐:
1. arXiv 检索论文
官方网址:https://arxiv.org/[1]
这将会有相关的开源地址、数据集等,对论文的转载很有帮助。
[En]
This will have the relevant open source code address, data set, etc., reproduce the paper is very helpful.
2. papers with code
官方网址:https://paperswithcode.com/[3]
有很多优秀数据集,有很多开源数据库,对科研有很好的帮助。
应该具备的能力
1. 大型数据处理能力
此时能够处理几GB的数据集,能够通过数据扩增方法和数据处理函数来完成数据的扩充,使得能够获取更多的数据集来训练自己的数据集。
2. 完成自己的项目
如果你是一名研究人员,你应该能够通过自己的任务需求应用复杂的模型或定制网络,训练自己的数据集,并对模型进行优化,以达到最佳结果。
[En]
If you are a researcher, you should be able to apply a complex model or custom network through your own task requirements, train your own data sets, and optimize the model to achieve the best results.
如果他们是非科学工作者,他们应该找到一个培训项目,或者参加一些比赛来锻炼自己,根据具体的任务完成代码的开发,通过参数调整和优化达到模型的最佳效果。
[En]
If they are non-scientific workers, they should find a training project, or participate in some competitions to exercise themselves, complete the development of the code according to specific tasks, and achieve the best results of the model through parameter adjustment and optimization.
3. 深度学习理论
此时,你的深入学习不仅要知道基本,更要知道基本原理。在调整参数或添加功能时,应了解该功能的具体功能以及实现该功能的原理。例如,各种激活函数的优缺点、各种优化函数的原理、各种超参数的作用等。
[En]
At this time, your in-depth learning should not only know the basic, but know the basic principle. When adjusting parameters or adding a function, you should know the specific function of this function and the principle of realizing this function. For example, the advantages and disadvantages of various activation functions, the principles of various optimization functions, and the role of various hyperparameters, and so on.
此时在回看书籍,或者回看视频时,则会有不一样的理解,从懵懂无知,到有了一些体会,能够依据相关教程来完成相关项目的实现,而不仅仅只是照着敲代码,为了一个错误代码而反复找了半天的bug。
第三步:专业
对自己研究领域有足够的认识,在脑海中应该能形成一篇综述的模型,比如yolov1是那年提出的,提出时具备怎样的影响,是为了解决什么而提出,YOLOv2有哪些改进,这些改进原理,以及解决了什么问题,等等这些都有一个清晰的了解。
并在自己的研究方向上取得了一些成果,比如在某个模型的基础上增加了自己的方法,或者提出了新的模型,在某个方向上解决了现有的痛点,取得了更好的效果。
[En]
And have some achievements in their own research direction, such as adding an own method on the basis of a certain model, or proposing a new model to solve the existing pain points in a certain direction to achieve better results.
当然这里不包含那种魔改哈,这种专业级别至少是在顶会上发过一篇以上文章的人吧。
我也在第二阶段继续探索,摸索到第三阶段,希望与看到这篇文章的各位共同努力,共同进步。
[En]
I also continue to explore in the second stage, and fumble to the third stage, hoping to make joint efforts and progress with you who see this article.
第四步:泰斗
这一水平堪比吴恩达、李菲菲、周治华。当然,要达到这个水平对我们来说太难了。对于我们大多数人来说,达到专业水平是很好的,但至于最高水平,让我们把它留给天才。
[En]
This level is like Wu Enda, Li Feifei and Zhou Zhihua. Of course, it is too difficult for us to get to this level. It would be nice for most of us to reach the professional level, but as for the top level, let's leave it to the geniuses.
END
大家好。我是从双飞梦进厂,终于如愿以偿的非班级程序员玉峰。现在,他在一家大工厂担任算法工程师。
[En]
Hello, everyone. I am Yufeng, a non-class programmer who entered the factory from Shuangfei dream and finally got what he wanted. Now he works as an algorithm engineer in a big factory.
在本硕期间,他投身于各种科研比赛,从童年到全国冠军。读研究生时,我访问了清华大学,访问了7项发明专利和3篇科研文章。欢迎关注公众号:宇峰密码,看看我三年的研究生逆袭之旅。
[En]
During the period of Benshuo, he devoted himself to all kinds of scientific research competitions, from childhood to national champion. When I was in graduate school, I visited Tsinghua University, seven invention patents and three scientific research articles. Welcome to follow the official account: Yufeng code word, check out my three-year counterattack trip of graduate students.
Original: https://blog.csdn.net/m0_37940804/article/details/117918648
Author: 羽峰码字
Title: 探寻从小白成长为深度学习大佬的过程,一些超级干货分享
相关阅读
Title: Pandas常用累计、同比、环比等统计方法实践案例
统计表中常常以本年累计、上年同期(累计)、当期(例如当月)完成、上月完成为统计数据,并进行同比、环比分析。如下月报统计表所示样例,本文将使用Python Pandas工具进行统计。
其中:
- (本年)累计:是指本年1月到截止月份的合计数
- (上年)同期(累计):是指去年1月到与本年累计所对应截止月份的合计数
- 同比(增长率)=(本期数-同期数)/同期数*100%
- 环比(增长率)=(本期数-上期数)/上期数*100%
注:这里的本期是指本月完成或当月完成,上期数是指上月完成。
示例数据:
注:为了演示方便,本案例数据源仅使用2年,且每年5个月的数据。
; 1. (本年)累计
在统计分析的发展中,按年和按月积累一些统计数据是相当常见的。对于数据,就是按规则逐行累计数据。
[En]
In the development of statistical analysis, it is quite common to accumulate some statistical data on an annual and monthly basis. For data, it is to accumulate data row by row according to the rules.
Pandas中的cumsum()函数可以实现按某时间维度累计需求。
import pandas as pd
df = pd.read_csv('data2021.csv')
cum_columns_name = ['cum_churncount','cum_newcount']
df[cum_columns_name] = df[['years','churncount','newcount']].groupby(['years']).cumsum()
注:其中分组'years'是指年度时间维度累计。
计算结果如下:
2. (上年)同期累计
对于(上年)同期累计,将直接取上一年度累计值的同月份数据。pandas DataFrame.shift()函数可以把数据移动指定的行数。
接续上列,读取同期数据。首先是把'yearmonth'上移五行,如上图所示得到新的DataFrame,通过'yearmonth'进行两表数据关联(左关联:左侧为原表,右侧为移动后的新表),实现去同期数据效果。
cum_columns_dict = {'cum_churncount':'cum_same_period_churncount',
'cum_newcount':'cum_same_period_newcount'}
df_cum_same_period = df[['cum_churncount','cum_newcount','yearmonth']].copy()
df_cum_same_period = df_cum_same_period.rename(columns=cum_columns_dict)
df_cum_same_period.loc[:,'yearmonth'] = df_cum_same_period['yearmonth'].shift(-5)
df = pd.merge(left=df,right=df_cum_same_period,on='yearmonth',how='left')
3. 上月(完成)
取上月的数据,使用pandas DataFrame.shift()函数把数据移动指定的行数。
接续上列,读取上期数据。(与取同期原理一样,略)
last_mnoth_columns_dict = {'churncount':'last_month_churncount',
'newcount':'last_month_newcount'}
df_last_month = df[['churncount','newcount','yearmonth']].copy()
df_last_month = df_last_month.rename(columns=last_mnoth_columns_dict)
df_last_month.loc[:,'yearmonth'] = df_last_month['yearmonth'].shift(-1)
df = pd.merge(left=df,right=df_last_month,on='yearmonth',how='left')
4. 同比(增长率)
计算同比涉及到除法,需要剔除除数为零的数据。
df.fillna(0,inplace=True)
df.loc[df['cum_same_period_churncount']!=0,'cum_churncount_rat'] = (df['cum_churncount']-df['cum_same_period_churncount'])/df['cum_same_period_churncount']
df.loc[df['cum_same_period_newcount']!=0,'cum_newcount_rat'] = (df['cum_newcount']-df['cum_same_period_newcount'])/df['cum_same_period_newcount']
df[['yearmonth','cum_churncount','cum_newcount','cum_same_period_churncount','cum_same_period_newcount','cum_churncount_rat','cum_newcount_rat']]
5. 环比(增长率)
df.loc[df['last_month_churncount']!=0,'churncount_rat'] = (df['churncount']-df['last_month_churncount'])/df['last_month_churncount']
df.loc[df['last_month_newcount']!=0,'newcount_rat'] = (df['newcount']-df['last_month_newcount'])/df['last_month_newcount']
df[['yearmonth','churncount','newcount','last_month_churncount','last_month_newcount','churncount_rat','newcount_rat']]
6. 总结
pandas做统计计算功能方法比较多,这里总结用到的技术有累计cumsum()函数、移动数据shift()函数、表合并关联merge()函数,以及通过loc条件修改数据。
Original: https://blog.csdn.net/xiaoyw/article/details/122979421
Author: 肖永威
Title: Pandas常用累计、同比、环比等统计方法实践案例

模型修改之替换骨干网络(backbone)

小米集团副总裁崔宝秋:开源是人类技术进步的最佳平台和模式

《Relation Memory Argument Language Model》论文笔记

cv2.bitwise_and()图像的与运算

百度Apollo智能驾驶之CyberRT__自定义cyber_param命令行工具

自然语言处理中N-gram

粒子群算法matlab代码(注释很详细哦,图像也美美哒,任意维度)

COCO数据集目标检测输出指标AP、AR、maxDets

Solving environment: failed with initial frozen solve. Retrying with flexible solve.

jieba分词的功能和性能分析

从环境搭建到回归神经网络案例,带你掌握Keras

RTX3080 安装tensorflow-gpu and cudnn

聚类算法学习——kernel K-means及实现过程

28【源码】数据可视化:基于 Echarts + Python Flask 动态实时大屏范例 – 数据分析看板
