一文看懂深度学习(白话解释+8个优缺点+4个典型算法)

本文深入解析深度学习,涵盖其在人工智能领域的地位、与传统机器学习的区别、四大优势及四大劣势,以及卷积神经网络、循环神经网络、生成对抗网络和深度强化学习四种典型算法。

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

本文首发自 easyAI - 人工智能知识库
原文地址:《一文看懂深度学习(白话解释+8个优缺点+4个典型算法)

一文看懂深度学习

深度学习有很好的表现,引领了第三次人工智能的浪潮。目前大部分表现优异的应用都用到了深度学习,大红大紫的 AlphaGo 就使用到了深度学习。

本文将详细的给大家介绍深度学习的基本概念、优缺点和主流的4个典型算法。

深度学习、神经网络、机器学习、人工智能的关系

深度学习、机器学习、人工智能

简单来说:

  1. 深度学习是机器学习的一个分支(最重要的分支)
  2. 机器学习是人工智能的一个分支

深度学习、机器学习、人工智能的关系

目前表现最好的一些应用大部分都是深度学习,正是因为深度学习的突出表现,引发了人工智能的第三次浪潮。详情可以看《人工智能的发展史——3次 AI 浪潮

深度学习、神经网络

深度学习的概念源于人工神经网络的研究,但是并不完全等于传统神经网络。

不过在叫法上,很多深度学习算法中都会包含"神经网络"这个词,比如:卷积神经网络、循环神经网络。

所以,深度学习可以说是在传统神经网络基础上的升级,约等于神经网络。

深度学习和神经网络的关系

大白话解释深度学习

看了很多版本的解释,发现李开复在《人工智能》一书中讲的是最容易理解的,所以下面直接引用他的解释:

我们以识别图片中的汉字为例。

假设深度学习要处理的信息是“水流”,而处理数据的深度学习网络是一个由管道和阀门组成的巨大水管网络。网络的入口是若干管道开口,网络的出口也是若干管道开口。这个水管网络有许多层,每一层由许多个可以控制水流流向与流量的调节阀。根据不同任务的需要,水管网络的层数、每层的调节阀数量可以有不同的变化组合。对复杂任务来说,调节阀的总数可以成千上万甚至更多。水管网络中,每一层的每个调节阀都通过水管与下一层的所有调节阀连接起来,组成一个从前到后,逐层完全连通的水流系统。

深度学习类似一个水流系统

那么,计算机该如何使用这个庞大的水管网络来学习识字呢?

比如,当计算机看到一张写有“田”字的图片,就简单将组成这张图片的所有数字(在计算机里,图片的每个颜色点都是用“0”和“1”组成的数字来表示的)全都变成信息的水流,从入口灌进水管网络。

深度学习-将图片数字化

我们预先在水管网络的每个出口都插一块字牌,对应于每一个我们想让计算机认识的汉字。这时,因为输入的是“田”这个汉字,等水流流过整个水管网络,计算机就会跑到管道出口位置去看一看,是不是标记由“田”字的管道出口流出来的水流最多。如果是这样,就说明这个管道网络符合要求。如果不是这样,就调节水管网络里的每一个流量调节阀,让“田”字出口“流出”的水最多。

这下,计算机要忙一阵了,要调节那么多阀门!好在计算机的速度快,暴力的计算加上算法的优化,总是可以很快给出一个解决方案,调好所有阀门,让出口处的流量符合要求。

深度学习-识别田字

下一步,学习“申”字时,我们就用类似的方法,把每一张写有“申”字的图片变成一大堆数字组成的水流,灌进水管网络,看一看,是不是写有“申”字的那个管道出口流水最多,如果不是,我们还得再调整所有的阀门。这一次,要既保证刚才学过的“田”字不受影响,也要保证新的“申”字可以被正确处理。

深度学习-学习申字

如此反复进行,知道所有汉字对应的水流都可以按照期望的方式流过整个水管网络。这时,我们就说,这个水管网络是一个训练好的深度学习模型了。当大量汉字被这个管道网络处理,所有阀门都调节到位后,整套水管网络就可以用来识别汉字了。这时,我们可以把调节好的所有阀门都“焊死”,静候新的水流到来。

深度学习-学习所有汉字

与训练时做的事情类似,未知的图片会被计算机转变成数据的水流,灌入训练好的水管网络。这时,计算机只要观察一下,哪个出水口流出来的水流最多,这张图片写的就是哪个字。

深度学习大致就是这么一个用人类的数学知识与计算机算法构建起来的整体架构,再结合尽可能多的训练数据以及计算机的大规模运算能力去调节内部参数,尽可能逼近问题目标的半理论、半经验的建模方式。

传统机器学习 VS 深度学习

传统机器学习和深度学习的相似点

传统机器学习和深度学习的相似点

在数据准备和预处理方面,两者是很相似的。

他们都可能对数据进行一些操作:

  • 数据清洗
  • 数据标签
  • 归一化
  • 去噪
  • 降维

对于数据预处理感兴趣的可以看看《AI 数据集最常见的6大问题(附解决方案)

传统机器学习和深度学习的核心区别

传统机器学习和深度学习的核心区别

传统机器学习的特征提取主要依赖人工,针对特定简单任务的时候人工提取特征会简单有效,但是并不能通用。

深度学习的特征提取并不依靠人工,而是机器自动提取的。这也是为什么大家都说深度学习的可解释性很差,因为有时候深度学习虽然能有好的表现,但是我们并不知道他的原理是什么。

深度学习的优缺点

深度学习的优缺点

优点1:学习能力强

从结果来看,深度学习的表现非常好,他的学习能力非常强。

优点2:覆盖范围广,适应性好

深度学习的神经网络层数很多,宽度很广,理论上可以映射到任意函数,所以能解决很复杂的问题。

优点3:数据驱动,上限高

深度学习高度依赖数据,数据量越大,他的表现就越好。在图像识别、面部识别、NLP 等部分任务甚至已经超过了人类的表现。同时还可以通过调参进一步提高他的上限。

优点4:可移植性好

由于深度学习的优异表现,有很多框架可以使用,例如 TensorFlowPytorch。这些框架可以兼容很多平台。

缺点1:计算量大,便携性差

深度学习需要大量的数据很大量的算力,所以成本很高。并且现在很多应用还不适合在移动设备上使用。目前已经有很多公司和团队在研发针对便携设备的芯片。这个问题未来会得到解决。

缺点2:硬件需求高

深度学习对算力要求很高,普通的 CPU 已经无法满足深度学习的要求。主流的算力都是使用 GPU 和 TPU,所以对于硬件的要求很高,成本也很高。

缺点3:模型设计复杂

深度学习的模型设计非常复杂,需要投入大量的人力物力和时间来开发新的算法和模型。大部分人只能使用现成的模型。

缺点4:没有"人性",容易存在偏见

由于深度学习依赖数据,并且可解释性不高。在训练数据不平衡的情况下会出现性别歧视、种族歧视等问题。

4种典型的深度学习算法

4种典型的深度学习算法

卷积神经网络 - CNN

CNN 的价值:

  1. 能够将大数据量的图片有效的降维成小数据量(并不影响结果)
  2. 能够保留图片的特征,类似人类的视觉原理

CNN 的基本原理:

  1. 卷积层 – 主要作用是保留图片的特征
  2. 池化层 – 主要作用是把数据降维,可以有效的避免过拟合
  3. 全连接层 – 根据不同任务输出我们想要的结果

CNN 的实际应用:

  1. 图片分类、检索
  2. 目标定位检测
  3. 目标分割
  4. 人脸识别
  5. 骨骼识别

了解更多《一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)

循环神经网络 - RNN

RNN 是一种能有效的处理序列数据的算法。比如:文章内容、语音音频、股票价格走势…

之所以他能处理序列数据,是因为在序列中前面的输入也会影响到后面的输出,相当于有了“记忆功能”。但是 RNN 存在严重的短期记忆问题,长期的数据影响很小(哪怕他是重要的信息)。

于是基于 RNN 出现了 LSTM 和 GRU 等变种算法。这些变种算法主要有几个特点:

  1. 长期信息可以有效的保留
  2. 挑选重要信息保留,不重要的信息会选择“遗忘”

RNN 几个典型的应用如下:

  1. 文本生成
  2. 语音识别
  3. 机器翻译
  4. 生成图像描述
  5. 视频标记

了解更多《一文看懂循环神经网络-RNN(独特价值+优化算法+实际应用)

生成对抗网络 - GANs

假设一个城市治安混乱,很快,这个城市里就会出现无数的小偷。在这些小偷中,有的可能是盗窃高手,有的可能毫无技术可言。假如这个城市开始整饬其治安,突然开展一场打击犯罪的「运动」,警察们开始恢复城市中的巡逻,很快,一批「学艺不精」的小偷就被捉住了。之所以捉住的是那些没有技术含量的小偷,是因为警察们的技术也不行了,在捉住一批低端小偷后,城市的治安水平变得怎样倒还不好说,但很明显,城市里小偷们的平均水平已经大大提高了。

警察们开始继续训练自己的破案技术,开始抓住那些越来越狡猾的小偷。随着这些职业惯犯们的落网,警察们也练就了特别的本事,他们能很快能从一群人中发现可疑人员,于是上前盘查,并最终逮捕嫌犯;小偷们的日子也不好过了,因为警察们的水平大大提高,如果还想以前那样表现得鬼鬼祟祟,那么很快就会被警察捉住。为了避免被捕,小偷们努力表现得不那么「可疑」,而魔高一尺、道高一丈,警察也在不断提高自己的水平,争取将小偷和无辜的普通群众区分开。随着警察和小偷之间的这种「交流」与「切磋」,小偷们都变得非常谨慎,他们有着极高的偷窃技巧,表现得跟普通群众一模一样,而警察们都练就了「火眼金睛」,一旦发现可疑人员,就能马上发现并及时控制——最终,我们同时得到了最强的小偷和最强的警察。

同时得到了最强的小偷和最强的警察

了解更多《什么是生成对抗网络 - GAN?(基本概念+工作原理)

深度强化学习 - RL

强化学习算法的思路非常简单,以游戏为例,如果在游戏中采取某种策略可以取得较高的得分,那么就进一步「强化」这种策略,以期继续取得较好的结果。这种策略与日常生活中的各种「绩效奖励」非常类似。我们平时也常常用这样的策略来提高自己的游戏水平。

在 Flappy bird 这个游戏中,我们需要简单的点击操作来控制小鸟,躲过各种水管,飞的越远越好,因为飞的越远就能获得更高的积分奖励。

这就是一个典型的强化学习场景:

  • 机器有一个明确的小鸟角色——代理
  • 需要控制小鸟飞的更远——目标
  • 整个游戏过程中需要躲避各种水管——环境
  • 躲避水管的方法是让小鸟用力飞一下——行动
  • 飞的越远,就会获得越多的积分——奖励

游戏是典型的强化学习场景

你会发现,强化学习和监督学习、无监督学习 最大的不同就是不需要大量的“数据喂养”。而是通过自己不停的尝试来学会某些技能。

了解更多:《一文看懂什么是强化学习?(基本概念+应用场景+主流算法)

总结

深度学习属于机器学习的范畴,深度学习可以说是在传统神经网络基础上的升级,约等于神经网络。

深度学习和传统机器学习在数据预处理上都是类似的。核心差别在特征提取环节,深度学习由机器自己完成特征提取,不需要人工提取。

深度学习的优点:

  1. 学习能力强
  2. 覆盖范围广,适应性好
  3. 数据驱动,上限高
  4. 可移植性好

深度学习的缺点:

  1. 计算量大,便携性差
  2. 硬件需求高
  3. 模型设计复杂
  4. 没有"人性",容易存在偏见

深度学习的4种典型算法:

  1. 卷积神经网络 - CNN
  2. 循环神经网络 - RNN
  3. 生成对抗网络 - GANs
  4. 深度强化学习 - RL
<think>好的,我现在要解释一下HHV函数的用法。用户之前问过关于波峰分析模块的内容,里面提到了HHV函数,现在他们想进一步了解这个函数的具体用法。我需要确保我的解释清晰易懂,适合不同水平的用户理解。 首先,我需要回忆一下HHV函数的基本定义。HHV通常代表“Highest High Value”,也就是在一定周期内的最高价。这在技术分析中很常见,用于识别一定时间窗口内的最高点,帮助判断趋势或支撑阻力位。用户可能在编写指标或策略时用到这个函数,尤其是在检测波峰的时候。 接下来,我应该考虑用户可能的背景。他们可能是有一定编程经验的交易者,或者是刚开始学习量化交易的新手。因此,解释需要兼顾技术细节易懂性。可能需要举例说明,并且说明参数的作用,比如窗口长度如何影响结果。 然后,用户的问题集中在“用法”上,所以我需要涵盖函数的基本语法、参数含义、返回值以及实际应用场景。同时,结合他们之前的问题,波峰分析中的HHV函数使用了PeakWindow*2+1作为窗口长度,我需要解释这种设计的原因,比如对称窗口的优势,以及如何确保中间位置的最高价被正确识别。 另外,用户可能想知道在不同情况下如何调整参数,比如PeakWindow的大小对结果的影响,或者MinDistance如何与HHV配合使用来过滤波峰。可能需要提到参数调优的建议,比如在趋势市场震荡市场中不同的设置策略。 还要考虑可能的常见错误或误区。比如,窗口长度的选择不当可能导致信号滞后或遗漏,或者误解HHV函数返回的是窗口内的最高价而不是收盘价等其他价格。需要指出这些注意事项,帮助用户避免错误。 此外,实际应用案例会有助于理解。比如,在上升趋势中,HHV如何帮助确认新高,或者在震荡行情中如何识别假突破。可以结合用户之前提到的波峰分析案例,具体说明HHV在其中的作用。 最后,总结HHV函数的重要性,以及与其他技术指标(如LLV最低价函数)的配合使用,可能也是用户感兴趣的部分。需要保持回答的结构清晰,分点说明,方便阅读。 现在需要检查是否有遗漏的部分,比如HHV函数在不同软件或编程语言中的具体实现是否有差异。例如,在MetaTrader、TradingView或Python的Pandas库中,HHV可能有不同的函数名或参数设置。可能需要提到这一点,但用户的问题没有具体指明平台,所以保持一般性的解释更安全。 还要确保语言简洁,避免过于技术化的术语,必要时用比喻或类比帮助理解。例如,将HHV比喻为在特定时间段内寻找最高点的“尺子”,帮助用户形象化其功能。 总结下来,回答的结构应该是: 1. HHV函数的定义作用 2. 参数解释(如周期长度) 3. 返回值说明 4. 实际应用场景(如波峰检测、趋势判断) 5. 示例代码片段(如果有) 6. 参数调整建议 7. 注意事项常见错误 8. 与其他函数的配合使用 确保每个部分都有足够的细节,但不过于冗长。可能还需要比较HHV与其他类似函数的区别,比如MAX函数,但HHV通常是针对高价序列的特定应用。 最后,结合用户之前的问题,强调在波峰分析中HHV如何帮助确认局部高点,以及对称窗口设计的优势,比如避免滞后,确保中间K线的最高价被正确比较。这样可以让用户更好地理解之前的内容现在的解释之间的联系。</think>--- ### **HHV 函数详解** **HHV**(**Highest High Value**)是技术分析中常用的函数,用于计算指定时间窗口内的**最高价(High)**。它在量化交易、指标编写价格模式识别中广泛应用,尤其在波峰检测、趋势跟踪支撑阻力位分析中起到关键作用。 --- ### **1. 函数定义与语法** - **基本形式**:`HHV(数据序列, 周期长度)` - **数据序列**:通常为价格数据(如 `High` 最高价序列)。 - **周期长度**:计算最高价的窗口大小(例如 `N` 根K线)。 - **返回值**:返回指定窗口内所有K线的最高价中的最大值。 --- ### **2. 核心作用** - **识别局部高点**:在波动中找出某一时间段内的最高价,帮助确认波峰位置。 - **过滤噪声**:通过窗口限制,避免短期波动对趋势判断的干扰。 - **支撑阻力分析**:标记历史高点,辅助判断价格突破或回调的可能性。 --- ### **3. 参数详解** #### **(1) 周期长度(窗口大小)** - **对称窗口设计**(如 `PeakWindow*2+1`) - 以当前K线为中心,向前后各取 `PeakWindow` 根K线,总长度为 `PeakWindow*2+1`。 - **示例**:若 `PeakWindow=3`,窗口包含当前K线、前3根后3根K线,共7根。 - **优势**:确保当前K线位于窗口中央,避免因窗口偏移导致信号滞后或遗漏。 #### **(2) 数据序列选择** - **默认应用**:通常使用最高价序列(`High`),但也可用于其他序列(如成交量、自定义指标值)。 - **特殊场景**: - 若需计算收盘价的最高值,可调用 `HHV(Close, N)`。 - 若分析波动幅度,可使用 `HHV(High - Low, N)`。 --- ### **4. 实际应用场景** #### **(1) 波峰检测(如提问中的案例)** ```python # 伪代码示例:标记当前K线是否为波峰 PeakWindow = 3 # 窗口参数 CurrentHigh = High[当前K线] WindowHigh = HHV(High, PeakWindow*2+1) # 计算窗口内最高价 # 若当前K线的最高价等于窗口中央的最高价,则标记为候选波峰 PeakFlag = (CurrentHigh == WindowHigh[PeakWindow]) ``` #### **(2) 趋势方向判断** ```python # 伪代码示例:判断是否创近期新高 N = 20 # 窗口长度 RecentHigh = HHV(High, N) # 若当前价格突破20周期新高,视为趋势启动信号 TrendSignal = (Close > RecentHigh) ``` #### **(3) 动态支撑阻力位** ```python # 伪代码示例:绘制最近50根K线的最高价作为阻力线 ResistanceLine = HHV(High, 50) Plot(ResistanceLine, color=red, name="阻力位") ``` --- ### **5. 参数调整与优化建议** 1. **周期长度的选择** - **短周期(如5-10)**:敏感度高,适合捕捉短期波动,但可能产生虚假信号。 - **长周期(如50-200)**:平滑噪声,适合识别长期趋势,但信号滞后明显。 2. **对称窗口 vs 单边窗口** - **对称窗口**(如 `PeakWindow*2+1`) - **优点**:即时性强,避免滞后。 - **适用场景**:波峰/波谷的实时检测。 - **单边窗口**(仅向后取N根K线) - **优点**:计算效率高。 - **适用场景**:历史数据分析或不需要实时性的场景。 --- ### **6. 注意事项** 1. **窗口越界问题** - 在计算初始K线时(如前3根K线),若窗口长度超过已有数据量,可能导致返回值异常。 - **解决方法**:忽略前N根K线,或使用动态窗口(如 `MIN(BarIndex, N)`)。 2. **与LLV函数的配合** - **LLV(Lowest Low Value)**:计算窗口内最低价,与HHV结合可分析价格通道。 - **示例**: ```python ChannelHigh = HHV(High, 20) ChannelLow = LLV(Low, 20) Plot(ChannelHigh, color=blue) Plot(ChannelLow, color=red) ``` 3. **不同平台的实现差异** - **TradingView/Pine Script**:直接使用 `ta.highest(high, N)`。 - **MetaTrader**:通过 `iHigh()` 循环手动计算。 - **Python/Pandas**:使用 `rolling(window=N).max()`。 --- ### **7. 实战案例** #### **案例1:突破交易策略** ```python # 策略逻辑:价格突破30日新高时买入 N = 30 RecentHigh = HHV(High, N) if Close > RecentHigh[1]: # 前一根K线的最高价 EnterLong() ``` #### **案例2:波动收缩识别** ```python # 识别波动率收缩(HHVLLV差值缩小) N = 10 RangeHigh = HHV(High, N) RangeLow = LLV(Low, N) Volatility = RangeHigh - RangeLow if Volatility < MA(Volatility, 20)*0.5: Alert("波动收缩,可能面临变盘!") ``` --- ### **总结** HHV函数通过滑动窗口机制,为交易者提供了识别关键价格高点的高效工具。其核心价值在于: 1. **过滤噪声**,凸显趋势性高低点。 2. **灵活适配**不同周期策略需求。 3. **与其他指标协同**(如LLV、MA),构建复杂分析逻辑。 实际使用中需结合市场特性调整参数,并通过历史回测验证有效性,避免过度拟合。
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值