本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经验分享,旨在帮助读者更好地理解和应用这些领域的最新进展
6.1 实例:学习 XOR
通过学习一个表示来解决 XOR 问题。图上的粗体数字标明了学得的函数必须在每个点输出的值。(左) 直接应用于原始输入的线性模型不能实现 XOR 函数。当 x 1 = 0 时,模型的输出必须随着 x 2 的增大而增大。当 x 1 = 1 时,模型的输出必须随着 x 2 的增大而减小。线性模型必须对x 2 使用固定的系数 w 2 。因此,线性模型不能使用 x 1 的值来改变 x 2 的系数,从而不能解决这个问题。(右) 在由神经网络提取的特征表示的变换空间中,线性模型现在可以解决这个问题了。在我们的示例解决方案中,输出必须为 1 的两个点折叠到了特征空间中的单个点。换句话说,非线性特征将 x = [1,0] ⊤ 和 x = [0,1] ⊤ 都映射到了特征空间中的单个点 h = [1,0] ⊤ 。线性模型现在可以将函数描述为 h 1 增大和 h 2 减小。在该示例中,学习特征空间的动机仅仅是使得模型的能力更大,使得它可以拟合训练集。在更现实的应用中,学习的表示也可以帮助模型泛化。
代码实现:
import tensorflow as tf
import numpy as np
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
Y = np.array([[0], [1], [1], [0]])
x = tf.placeholder(tf.float32, [None, 2])
y = tf.placeholder(tf.float32, [None, 1])
w1_1 = tf.Variable(tf.random_normal([2, 1]))
w1_2 = tf