什么时候使用深度学习? - madelinecaples


如果简单的机器学习方法可以令人满意地解决您的问题,则没有太多理由使用神经网络,因为训练它们在时间和计算能力方面往往很昂贵。
对于传统的机器学习方法而言,最有效的问题是涉及结构化数据,这些数据即是已经被理解的结构和标签之间的关系。例如,一个数据表将一个人的某些特征(例如年龄,孩子的数量,吸烟者或不吸烟者,已知的健康状况等)与该人的健康保险的价格相匹配。
由于存在一些问题,如果特征和目标之间的关系不太清楚,而神经网络则是对这些数据进行预测的最佳选择。这将涉及非结构化数据(例如图像,音频和自然语言文本)的问题。例如,猫的图像(特征)中的像素排列方式使其更像猫(标签)的图片,而不是狗之类其他任何东西。
 
神经网络实际上什么?
之所以称为人工神经网络,不是因为它可以人工复制大脑的行为,而是因为它受到大脑中神经元的生物过程的启发。神经元接收带有树突的输入(由X表示,或机器学习中的特征向量),并将信号发送至轴突终端,该信号即为输出(由y或标记向量表示)。
这是从Wikipedia借来的一张很好的图片 ,它说明了一个神经元,它与我们在机器学习问题中看到的输入和输出的关系:

因此,想法是使用计算机和数学来做类似的事情。下面的小图代表一个单层神经网络,一个输入层包含功能,一个隐藏层使输入通过一些功能,输出层向我们试图解决的任何问题吐出答案。幕后实际发生的只是数字。我不知道是否需要说,但是实际上并没有线将小圆圈附加到其他圆圈上,这只是一种视觉上的方式来表示输入,隐藏层和输出之间的数学交互作用。

输入可能是图像中的像素,然后隐藏层使用一些功能来尝试找出代表猫(我们的目标)的像素的排列方式,而输出层会告诉我们是否给定了像素的排列方式像素可能代表猫还是不代表猫。
 
这些术语是什么意思?
尽管神经网络是一种用于深度学习问题空间的体系结构,但神经网络深度学习通常可以互换使用。
每类模型的特定体系结构都具有特殊功能的神经网络的变体:

  • CNNS:卷积神经网络-用于图像
  • RNN:递归神经网络-用于文本之类的东西,其中输入顺序(单词或字符)很重要
  • GAN:生成人工网络-从输入中产生新事物的网络,例如将一幅图像转换为另一幅图像

之所以这样称呼深度学习领域中要解决的问题,是因为用于解决问题的网络在输入和输出之间具有多个隐藏层-它们很深。每一层都了解有关数据的信息,然后将其输入到下一层。
 
各层里是什么?
在浅层网络中,例如线性回归,唯一的层是线性的,并且包含线性函数。该模型可以学习预测输入和输出之间的线性关系。
在深度学习中,每一层都有一个线性函数和一个非线性函数,称为激活函数,它使网络能够揭示数据中的非线性关系。通过使用多层中的功能来了解数据,网络不仅可以了解要素和标签之间的直线关系,还可以了解有关数据的更复杂的见解。
示例:在经过图像数据训练的网络中,较早的层学习图像数据的常规属性,例如垂直和水平边缘,而较后的层则学习更特定于网络整体要解决的问题的属性。对于猫或非猫的网络,这些功能将是猫特有的功能,例如尖的耳朵,皮毛,胡须等。
神经网络的确切架构会有所不同,具体取决于输入功能,要解决的问题以及我们决定在输入和输出层之间放置多少层,但原理是相同的:在每一层我们都有一个线性函数和激活函数,该函数一直输入到接下来的层中,一直到最后的输出层为止,这回答了我们正在询问的有关数据的问题。
 
为什么需要激活函数
为什么每一层都有一个线性函数和激活函数,激活函数的意义是什么?为了回答这个问题,让我们看一下如果没有激活函数,而是有一串线性方程,每一层都有一个线性方程,将会发生什么。
我们有线性方程:y = wx + b
  • 第1层
    • 让我们分配一些值并求解y:
      • w = 5,b = 10,x = 100:y =(5 * 100)+ 10→y = 510
    • 510是第一层的输出
  • 第2层:
    • 我们将其传递给下一层,510现在是该层的输入,因此它是新的x值
    • 让我们将参数设置为不同的值:
      • w = 4,b = 6,现在我们有了方程:
      • y =(4 * 510)+ 6→我们的新输出为y = 2046
  • 但这就是问题:我们可以不必设置两层这个过程,而只需将w和b设置为等于让我们首先得到2046的任何值即可。例如:w = 20,b = 46,这也将使我们在单层中得到y = 20 * 100 + 46 = 2046。
  • 最重要的是,我们不会获得仅使用线性方程式就能识别数据中非线性关系的模型。

线性方程组的层数无关紧要:通过将参数w和b设置为不同的值,它们始终可以组合为一个线性方程组。除非我们将非线性函数引入混合,否则我们的模型将始终是线性的。这就是为什么我们需要使用激活函数。我们可以将多个线性函数串在一起,只要我们通过激活函数将每个线性函数分开,这样我们的模型就可以进行更复杂的计算,并发现数据中更复杂的关系。
 
总结
如果您有很多数据,并且想解决问题,但是不确定如何表示这些数据的结构,那么深度学习可能适合您。图像,音频和涉及人类语言的任何事物都可能是深度学习的最爱,并且这些问题中的每一个都将具有自己的神经网络架构风格,可以用来解决该问题。