动手学深度学习(六) 凸优化(上)

简介: 动手学深度学习(六) 凸优化(上)

优化与深度学习


优化与估计


尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同。

  • 优化方法目标:训练集损失函数值
  • 深度学习目标:测试集损失函数值(泛化性)

%matplotlib inline
import sys
sys.path.append('/home/kesci/input')
import d2lzh1981 as d2l
from mpl_toolkits import mplot3d # 三维画图
import numpy as np

def f(x): return x * np.cos(np.pi * x)
def g(x): return f(x) + 0.2 * np.cos(5 * np.pi * x)
d2l.set_figsize((5, 3))
x = np.arange(0.5, 1.5, 0.01)
fig_f, = d2l.plt.plot(x, f(x),label="train error")
fig_g, = d2l.plt.plot(x, g(x),'--', c='purple', label="test error")
fig_f.axes.annotate('empirical risk', (1.0, -1.2), (0.5, -1.1),arrowprops=dict(arrowstyle='->'))
fig_g.axes.annotate('expected risk', (1.1, -1.05), (0.95, -0.5),arrowprops=dict(arrowstyle='->'))
d2l.plt.xlabel('x')
d2l.plt.ylabel('risk')
d2l.plt.legend(loc="upper right")

<matplotlib.legend.Legend at 0x7fc092436080>


60.png


优化在深度学习中的挑战


  1. 局部最小值
  2. 鞍点
  3. 梯度消失


局部最小值


def f(x):
    return x * np.cos(np.pi * x)
d2l.set_figsize((4.5, 2.5))
x = np.arange(-1.0, 2.0, 0.1)
fig,  = d2l.plt.plot(x, f(x))
fig.axes.annotate('local minimum', xy=(-0.3, -0.25), xytext=(-0.77, -1.0),
                  arrowprops=dict(arrowstyle='->'))
fig.axes.annotate('global minimum', xy=(1.1, -0.95), xytext=(0.6, 0.8),
                  arrowprops=dict(arrowstyle='->'))
d2l.plt.xlabel('x')
d2l.plt.ylabel('f(x)');


61.png


鞍点

x = np.arange(-2.0, 2.0, 0.1)
fig, = d2l.plt.plot(x, x**3)
fig.axes.annotate('saddle point', xy=(0, -0.2), xytext=(-0.52, -5.0),
                  arrowprops=dict(arrowstyle='->'))
d2l.plt.xlabel('x')
d2l.plt.ylabel('f(x)');


62.png


e.g.

x, y = np.mgrid[-1: 1: 31j, -1: 1: 31j]
z = x**2 - y**2
d2l.set_figsize((6, 4))
ax = d2l.plt.figure().add_subplot(111, projection='3d')
ax.plot_wireframe(x, y, z, **{'rstride': 2, 'cstride': 2})
ax.plot([0], [0], [0], 'ro', markersize=10)
ticks = [-1,  0, 1]
d2l.plt.xticks(ticks)
d2l.plt.yticks(ticks)
ax.set_zticks(ticks)
d2l.plt.xlabel('x')
d2l.plt.ylabel('y');


64.png


梯度消失

x = np.arange(-2.0, 5.0, 0.01)
fig, = d2l.plt.plot(x, np.tanh(x))
d2l.plt.xlabel('x')
d2l.plt.ylabel('f(x)')
fig.axes.annotate('vanishing gradient', (4, 1), (2, 0.0) ,arrowprops=dict(arrowstyle='->'))

Text(2, 0.0, 'vanishing gradient')


65.png

相关文章
|
机器学习/深度学习
动手学深度学习(六) 凸优化(下)
动手学深度学习(六) 凸优化(下)
133 0
动手学深度学习(六) 凸优化(下)
|
机器学习/深度学习 人工智能 算法
英伟达工程师解读NeurIPS 2019最热趋势:贝叶斯深度学习、图神经网络、凸优化
2019年人工智能研究什么最热?从今年最大型的AI顶会NeurIPS可以发现几大趋势:科学家们开始探索深度学习背后的理论和原理,贝叶斯深度学习、图神经网络和凸优化等深度学习新方法成为最热趋势。
293 0
英伟达工程师解读NeurIPS 2019最热趋势:贝叶斯深度学习、图神经网络、凸优化
|
5天前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习在自然语言处理中的应用与挑战
本文探讨了深度学习技术在自然语言处理(NLP)领域的应用,包括机器翻译、情感分析和文本生成等方面。同时,讨论了数据质量、模型复杂性和伦理问题等挑战,并提出了未来的研究方向和解决方案。通过综合分析,本文旨在为NLP领域的研究人员和从业者提供有价值的参考。
|
6天前
|
机器学习/深度学习 存储 人工智能
深度学习在图像识别中的应用与挑战
【9月更文挑战第27天】本文将深入探讨深度学习技术如何革新了图像识别领域,并分析当前面临的主要挑战。通过简明扼要的介绍,我们将揭示深度学习模型如何超越传统方法,以及它们在实际应用中的限制和未来发展方向。
|
3天前
|
机器学习/深度学习 算法框架/工具 计算机视觉
深度学习在图像识别中的应用
【9月更文挑战第30天】本文将深入探讨深度学习技术在图像识别领域的应用。我们将首先介绍深度学习的基本原理,然后通过一个实际的代码示例,展示如何使用深度学习进行图像识别。最后,我们将讨论深度学习在图像识别中的优势和挑战。
|
6天前
|
机器学习/深度学习 算法框架/工具 计算机视觉
深度学习在图像识别中的应用
【9月更文挑战第27天】本文将探讨深度学习技术如何改变图像识别领域。我们将通过实际案例和代码示例,展示深度学习模型如何从原始像素中学习和提取特征,以及如何使用这些特征进行准确的图像分类。
24 10
|
2天前
|
机器学习/深度学习 边缘计算 人工智能
深度学习在图像识别中的应用与挑战
【9月更文挑战第31天】本文深入探讨了深度学习技术在图像识别领域的应用,并分析了面临的主要挑战。从深度学习的基本概念出发,逐步展开到图像识别的具体应用案例,包括面部识别、自动驾驶车辆的视觉系统等。同时,文章也指出了数据集偏差、模型泛化能力以及计算资源限制等问题,并讨论了可能的解决方向。
|
2天前
|
机器学习/深度学习 边缘计算 人工智能
深度学习在图像识别中的应用与未来展望##
深度学习作为人工智能的重要分支,已经在许多领域展现出强大的应用前景。本文将探讨深度学习在图像识别技术中的应用及其未来的发展潜力。通过分析当前主流的深度学习模型和算法,揭示其在图像分类、目标检测等任务中的表现。同时,我们将讨论深度学习在图像识别中面临的挑战,并展望未来的研究方向和技术趋势。无论是对技术人员还是对普通读者,本文都将提供有价值的见解和启发。 ##
|
3天前
|
机器学习/深度学习 监控 算法
深度学习在图像识别中的应用与挑战
【9月更文挑战第30天】本文将探讨深度学习如何革新了图像识别领域,并介绍了一些核心算法和模型。我们将通过实际案例了解深度学习如何提升图像识别的准确度,并讨论当前面临的主要挑战及未来发展方向。
|
2天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第31天】本文旨在通过浅显易懂的语言和直观的比喻,为初学者揭开深度学习中卷积神经网络(CNN)的神秘面纱。我们将从CNN的基本原理出发,逐步深入到其在图像识别领域的实际应用,并通过一个简单的代码示例,展示如何利用CNN进行图像分类。无论你是编程新手还是深度学习的初学者,这篇文章都将为你打开一扇通往人工智能世界的大门。
下一篇
无影云桌面