当前位置:   article > 正文

深度学习与机器学习区别_机器学习和深度学习的对比

机器学习和深度学习的对比

深度学习与机器学习区别

本文目录:

一、特征提取方面

1.1、机器学习

1.2、深度学习

1.3、机器学习特征提取

1.4、深度学习特征提取

1.5、深度学习特征提取例子

二、数据量和计算性能要求

三、算法代表

3.1、朴素贝叶斯算法

3.2、决策树

四、神经网络


一、特征提取方面

 1.1、机器学习

  机器学习是一种人工智能技术,在给定数据集的情况下,可以自动学习模式并使用学习结果来预测或做出决策。它依靠数学和统计学算法来构建模型,这些模型可以使计算机在没有明确编程的情况下自主学习。

  机器学习是一种人工智能的分支,是指计算机系统能够通过对大量数据进行分析和学习,自动识别和预测模式。

  简单来说,机器学习就是让计算机通过数据学习来进行人类智力水平的任务。

  以下是一些机器学习中的常用概念:

  1. 数据集:指用于训练和测试机器学习算法的数据。
  2. 特征:指对数据集的描述,可以为数字或文本等格式。
  3. 模型:是机器学习算法的具体实现,可以根据特征和目标值进行训练。
  4. 监督学习:通过对输入数据和已知结果的匹配进行训练,从而预测未知数据的输出结果。
  5. 非监督学习:从未标记的数据中发现模式,从而推断出数据的结构和关系。
  6. 深度学习:一种基于神经网络的机器学习技术,可以模拟人脑的神经网络结构,利用多个隐层对数据进行学习和分类。

  机器学习广泛应用于许多领域,如电子商务、金融、医疗、自然语言处理、计算机视觉和自主驾驶汽车等。常见的机器学习算法包括决策树、逻辑回归、支持向量机、神经网络和随机森林。

  机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识。

1.2、深度学习

   深度学习是一种机器学习的方法,它利用由多个层次构成的神经网络来模拟和解决复杂问题。它的核心思想是通过层次化的学习和特征提取,从而逐步提高模型对数据的表征能力和预测能力。在深度学习中,核心技术包括反向传播算法、卷积神经网络、循环神经网络、生成对抗网络等。深度学习具有广泛的应用场景,如图像识别、语音识别、自然语言处理、人工智能等领域。

  深度学习通常由多个层组成,它们通常将更简单的模型组合在一起,将数据从一层传递到另-层来构建更复杂的模型。通过训练大量数据自动得出模型,不需要人工特征提取环节。

  深度学习算法试图从数据中学习高级功能,这是深度学习的一个非常独特的部分。因此,减少了为每个问题开发新特征提取器的任务。适合用在难提取特征的图像、语音、自然语言处理领域。

1.3、机器学习特征提取

  机器学习特征提取是指从原始数据中提取出有用的特征,以便用于机器学习算法的训练和模型的建立。这些特征可以是数值、文字、图像甚至声音等。通过特征提取,可以帮助机器学习算法更好地理解数据,实现更好的数据分析和分类。

  特征提取的目标是找到一组最能代表数据的特征集合,这些特征可以使机器学习算法从数据中学到更有意义的信息。

  特征提取的过程包括数据预处理、特征选择、特征提取和特征表示等步骤。在这些过程中,需要考虑到数据的种类、数量、质量和分布等因素,以及机器学习算法的适用性和需求等因素。

1.4、深度学习特征提取

  深度学习特征提取是指利用深度神经网络模型对原始数据进行自动学习提取特征的过程,使得原始数据能够更好地表示为一组高层次、抽象的特征,从而能够更好地应用于分类、识别、检测等任务中。

  深度学习特征提取在计算机视觉、自然语言处理、语音识别等领域被广泛使用。深度学习特征提取的具体方法包括卷积神经网络(CNN)、循环神经网络(RNN)等。通过使用深度神经网络对数据进行特征提取,可以大大提高模型的准确度和鲁棒性。

  深度学习可以通过堆叠多层神经网络来学习输入数据的复杂特征。

  在深度学习中,每一层神经网络都可以看作是对输入数据的一种映射,而每一层的输出都可以作为下一层的输入。通过不断地堆叠多层神经网络并对权重进行训练,可以逐渐提取出更复杂的特征,从而达到更精确的分类和预测。

1.5、深度学习特征提取例子

  以下是一个使用Keras实现的深度学习模型,用于对手写数字进行分类。

  该模型包含两个卷积层和两个全连接层,可以自动学习提取出手写数字的特征,并将其归类为数字0到9中的一个。 

  1. import numpy as np
  2. from keras.datasets import mnist
  3. from keras.models import Sequential
  4. from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
  5. from keras.utils import np_utils

# 加载MNIST数据集并进行预处理 

  1. # 加载MNIST数据集并进行预处理
  2. (X_train, y_train), (X_test, y_test) = mnist.load_data()
  3. X_train = X_train.reshape(X_train.shape[0], 28, 28, 1).astype('float32') / 255
  4. X_test = X_test.reshape(X_test.shape[0], 28, 28, 1).astype('float32') / 255
  5. y_train = np_utils.to_categorical(y_train)
  6. y_test = np_utils.to_categorical(y_test)

# 构建深度学习模型 

  1. # 构建深度学习模型
  2. model = Sequential()
  3. model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
  4. model.add(MaxPooling2D((2, 2)))
  5. model.add(Conv2D(64, (3, 3), activation='relu'))
  6. model.add(MaxPooling2D((2, 2)))
  7. model.add(Flatten())
  8. model.add(Dense(128, activation='relu'))
  9. model.add(Dense(10, activation='softmax'))

# 编译模型 

  1. # 编译模型
  2. model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 训练模型并评估性能

  1. # 训练模型并评估性能
  2. model.fit(X_train, y_train, epochs=10, batch_size=32, verbose=1)
  3. score = model.evaluate(X_test, y_test, verbose=0)
  4. print('Test loss:', score[0])
  5. print('Test accuracy:', score[1])

  在这个例子中,我们使用了卷积层和最大池化层来提取手写数字的视觉特征,然后通过全连接层将其转化为数字标签的预测。通过反向传播算法对权重进行训练,我们可以让模型自动学习提取特征的过程,从而实现更高效和准确的分类。

二、数据量和计算性能要求

  机器学习需要的执行时间远少于深度学习,深度学习参数往很庞大,需要通过大量数据的多次优化来训练参数。

第一、深度学习需要大量的训练数据集。
第二、训练深度神经网络需要大量的算力。

可能要花费数天、甚至数周的时间,才能使用数百万张图像的数据集训练出一个深度网络。

所以深度学习通常。
1.需要强大的GPU服务器来进行计算。
2.全面管理的分布式训练与预测服务--比如谷歌 TensorFlow 云机器学习平台。

三、算法代表

  机器学习:朴素贝叶斯、决策树等

3.1、朴素贝叶斯算法

  朴素贝叶斯算法是一种基于贝叶斯定理和特征条件独立假设的分类算法。贝叶斯定理是一种概率理论,它描述了在已知某些条件下,另一个事件发生的概率。

  朴素贝叶斯算法假设所有特征都是相互独立的,即每个特征变量与其他特征变量无关。基于这个假设,朴素贝叶斯算法可以通过观察已经有标签的数据集来预测新数据的标签类别。

  朴素贝叶斯算法常用于文本分类,垃圾邮件过滤和情感分析等应用。

  以下是使用Python实现朴素贝叶斯算法模型的示例代码:

  1. import numpy as np
  2. class NaiveBayes:
  3. def __init__(self, n_classes):
  4. self.n_classes = n_classes
  5. self.priors = None
  6. self.posteriors = None
  7. def fit(self, X, y):
  8. n_samples, n_features = X.shape
  9. self.priors = np.zeros(self.n_classes)
  10. self.posteriors = np.zeros((self.n_classes, n_features))
  11. for c in range(self.n_classes):
  12. X_c = X[y == c]
  13. self.priors[c] = len(X_c) / n_samples
  14. self.posteriors[c] = (X_c.sum(axis=0) + 1) / (len(X_c) + 1)
  15. def predict(self, X):
  16. y_pred = []
  17. for x in X:
  18. posteriors = []
  19. for c in range(self.n_classes):
  20. prior = np.log(self.priors[c])
  21. likelihood = np.sum(np.log(self.posteriors[c]) * x)
  22. posterior = prior + likelihood
  23. posteriors.append(posterior)
  24. y_pred.append(np.argmax(posteriors))
  25. return y_pred

  这个实现使用了拉普拉斯平滑来避免零概率问题,并将概率转换为对数形式以避免数值下溢问题。fit方法用于训练朴素贝叶斯模型,而predict方法用于对新样本进行分类。

3.2、决策树

  决策树是一种基于树形结构的分类和回归模型,常用于数据挖掘和机器学习领域。它通过对数据集进行递归地分割,不断对特征进行选择,直到最终得到一个递归的决策树。

  决策树的节点表示数据集中的一个特征,边表示这个特征的取值,叶子节点表示分类结果或回归结果。

  在分类问题中,决策树将一个样本从根节点分到一个特定的叶子节点,该叶子节点的类别即为该样本的类别;

  在回归问题中,决策树将一个样本从根节点分到一个特定的叶子节点,并且该叶子节点的值即为该样本的预测值。

  决策树具有可解释性好、易于理解和使用等优点,在实际应用中也有广泛的应用。

四、神经网络

  神经网络是一种模拟人类大脑神经系统运作方式的计算机程序。它由大量的人工神经元(模拟生物神经元)通过一定的连接方式组成,通过学习和训练,可以识别、分类、模拟和预测各种事物,具有良好的自适应性和非线性映射能力,在人工智能、图像识别、自然语言处理、语音识别等领域有广泛应用。

  神经网络包括前馈神经网络、递归神经网络等多种结构,其中前馈神经网络最为常见。

  神经网络实现逻辑与运算的示例代码

  神经网络实现逻辑与运算。

  逻辑与运算是两个二进制数都为1时结果为1,否则为0的运算。

  神经网络可以通过学习逻辑与运算的输入与输出之间的映射,来实现逻辑与运算。

  下面是一个简单的神经网络实现逻辑与运算的示例代码:

import numpy as np
  1. # 输入数据和标签
  2. x = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
  3. y = np.array([[0], [0], [0], [1]])

# 定义神经网络 

  1. # 定义神经网络
  2. class NeuralNetwork:
  3. def __init__(self):
  4. np.random.seed(1)
  5. self.weights = 2 * np.random.random((2, 1)) - 1
  6. def sigmoid(self, x):
  7. return 1 / (1 + np.exp(-x))
  8. def sigmoid_derivative(self, x):
  9. return x * (1 - x)
  10. def train(self, x, y, iterations):
  11. for i in range(iterations):
  12. output = self.predict(x)
  13. error = y - output
  14. adjustment = np.dot(x.T, error * self.sigmoid_derivative(output))
  15. self.weights += adjustment
  16. def predict(self, x):
  17. return self.sigmoid(np.dot(x, self.weights))

# 训练神经网络

  1. # 训练神经网络
  2. neural_network = NeuralNetwork()
  3. neural_network.train(x, y, 10000)

# 预测

  1. # 预测
  2. print(neural_network.predict(np.array([0, 0])))
  3. print(neural_network.predict(np.array([0, 1])))
  4. print(neural_network.predict(np.array([1, 0])))
  5. print(neural_network.predict(np.array([1, 1])))

输出结果为:

  1. [0.5]
  2. [0.2689864]
  3. [0.2689864]
  4. [0.11738518]

由于神经网络是基于概率的模型,输出的结果并非完全准确,

但可以看出对于输入为(0,0)、(0,1)和(1,0)时,输出都接近于0,

对于输入为(1,1)时,输出接近于1,符合逻辑与运算的结果。

             推荐阅读:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/93603
推荐阅读
相关标签
  

闽ICP备14008679号