深度学习中常见的几个基础概念

 

深度学习中常见的几个基础概念

  

   1. Linear regression : 

   Linear regression 对监督学习问题来说, 是最简单的建模形式. 上图蓝色点表示 training data point, 红色的线表示用于拟合训练数据的线性函数. 线性函数的总的形式为:

  

  在代码中表示这个模型, 可以将其定义为 单列的向量 (a single column vector) :

  # initialize variable / model parameters. 

  w = tf.Variable(tf.zeros([2, 1]), name = "weights")

  b = tf.Variable(0., name = "bias") 

  def inference(X):

    return tf.matmul(X, W) + b   

  既然我们已经定义了如果计算 loss , 此处 loss 函数我们设置为 squared error. 

        $ loss = \sum_{i} (y_i - y_{predicted_i})^2 $  

  我们统计 i, i 是每一个数据样本. 代码上表示为:

  def loss (X, Y) :

    Y_predicted = inference(X) 

    return tf.reduce_sum(tf.squared_difference(Y, Y_predicted)) 

  

  def inputs():
    weight_age = [[84, 46], [73, 20], [65, 52], [70, 30], [76, 57], [69, 25], [63, 28], [72, 36], [79
    blood_fat_content = [354, 190, 405, 263, 451, 302, 288, 385, 402, 365, 209, 290, 346, 254, 395,
    return tf.to_float(weight_age), tf.to_float(blood_fat_content)  

  我们利用 gradient descent 算法来优化模型的参数 :

  def train(tota_loss) :

    learning_rate = 0.000001 

    return tf.train.GradientDescentOptimizer (learning_rate).minimize(total_loss) 

  当你运行之后, 你会发现随着训练步骤的进行, 展示的 loss 会逐渐的降低. 

  def evaluate(sess, X, Y):

    print sess.run(inference([[80., 25.]]))  # ~ 303 

    print sess.run(inference([[65., 25.]]))  # ~ 256 

 

  Logistic regression.  

  线性回归模型预测的是一个连续的数字 (continuous value) , 或者其他任何 real number. 我们接下来会提供一个可以回答 yes-or-no 问题的模型, 例如 : " Is this email spam ? " 

  有一个在机器学习领域被常用的一个模型, 称为: logistic function. 也被称为 sigmoid function, 形状像 S . 

        $ f(x) = 1/(1+e^{-x}) $ 

  这里你看到了一个 logistic / sigmoid function 的图, 像 "S" 形状. 

  这个函数将 single input value 作为输入. 为了给这个函数输入多维, 或者我们训练数据集样本的特征 , 我们需要将他们组合为一个 value. 我们可以利用 线性回归模型 来做这个事情 . 

  

  # same params and variable initialization as log reg. 

  w = tf.Variable(tf.zeros([5, 1]), name = "weights")

  b = tf.Variable(0., name = "bias") 

  # former inference is now used for combing inputs. 

  def combine_inputs(X) :

     return tf.matmul(X, W) + b 

  # new inferred value is the sigmoid applied to the former. 

  def inference(X) :

    return tf.sigmoid (combine_inputs(X)) 

  

  这种问题 交叉熵损失函数解决的比较好. 

  我们可以视觉上比较 两个损失函数的表现, 根据预测的输出. 

  def loss (X, Y) : 

    return tf.reduce_mean (tf.sigmoid_cross_entropy_with_logits (combine_inputs(X), Y) 

  

  What "Cross-entropy" means

  

  加载数据 : 

  def read_csv (batch_size, file_name, record_defaults) : 

    filename_queue = tf.train.string_input_producer([os.path.dirname(__file__) + "/" + file_name]) 

    reader = tf.TextLineReader (skip_header_lines = 1) 

    key, value = reader.read(filename_queue) 

  

    # decode_csv will convert a Tensor from type string (the text line) in 

    # a tuple of tensor columns with the specified defaults, which also sets the data type for each column . 

    decoded = tf.decode_csv(value, record_defaults = record_defaults) 

 

    # batch actually reads the file and loads "batch_size" rows in a single tensor 

    return tf.train.shuffle_batch(decoded, batch_size=batch_size, capacity = batch_size * 50, min_after_dequeue = batch_size) 

  

  



 

  def inputs (): 

    passenger_id, survived, pclass, name, sex, age, sibsp, parch, ticket, fare, cabin, embarked = \ 

      read_csv (100, "train.csv", [[0.0], [0.0]] ........) 

    # convert categorical data . 

    is_first_class = tf.to_float (tf.equal(pclass, [1])) 

    is_second_class = tf.to_float (tf.equal(pclass, [2])) 

    is_third_class = tf.to_float (tf.equal (pclass, [3])) 

    gender = tf.to_float (tf.equal (sex, ["female"])) 

    # Finally we pack all the features in a single matrix ; 

    # We then trainspose to have a matrix with one example per row and one feature per column. 

    features = tf.transpose (tf.pack([is_first_class, is_second_class, is_third_class, gender, age])) 

    survived = tf.reshape(survived, [100, 1]) 

    return features, survived 

 

  



  

  

  

  

 

  

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

时间: 2025-01-26 14:27:43

深度学习中常见的几个基础概念的相关文章

深度学习中的基础线性代数-初学者指南

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 作者介绍:Brendan Fortuner 是一名在西雅图的亚马逊的软件工程师,目前自己在人工智能方面进行研究. 上过Jeremy Howard的深度学习课程后,我意识到我在线性代数方面的不足,而这大大影响我对类似反向传播这样的概念的理解.因此我决定在这个方面花点时间,以补全这方面的知识. 本文是对线性代数的基本介绍,用于深度学习中会使用到的一些常见的线性代数操作. 什么是线性代数? 在深度学习的背景下,线性

薛定谔的佛与深度学习中的因果

<寻梦环游记>看哭了许多人,小男孩米格踏过花瓣桥,也就踏入了既生又死的状态,出现在他眼前的,是恢弘的亡灵世界.如果人世间没有人再记得,骷髅人也将在亡灵世界烟消云散,这是人存在的本来景象吗?玛雅人祭奠的圣井,真的是通往亡灵世界的入口吗?玛雅人是不是已然到达了传说中的梵境? 紧跟着玛雅人到达梵境的,是现在的一批90后.<第一批90后已经出家了>称,办公室的90后已经找到人生的新方向,宣布成佛,"有也行,没有也行,不争不抢,不求输赢",这是真真正正的梵境,是物我两忘.

薛定谔的滚与深度学习中的物理

最近朋友圈里有大神分享薛定谔的滚,一下子火了,"当一个妹子叫你滚的时候,你永远不知道她是在叫你滚还是叫你过来抱紧",这确实是一种十分纠结的状态,而薛定谔是搞不清楚的,他连自己的猫是怎么回事还没有弄清楚.虽然人们对于薛定谔头脑中那只被放射性物质残害的猫的生死一直众说纷纭,斯特恩·盖拉赫却在实验中,实实在在看到了,我们身处的这个物理世界的量子性,也就是既生又死.既真又假.既梦又醒.既粒又波.既此又彼的存在,按照老子的说法是,玄之又玄,众妙之门.   量子性是这个世界已知的基本特征,未来的世

深度学习中吉布斯采样问题

问题描述 深度学习中吉布斯采样问题 在同一个RBM下采样,对与所有样本来说权值矩阵应该是相同的,也就相当于马尔科夫链中转移矩阵相同.那么达到细致平稳条件时,所有的样本是不是都会成为相同的值?因为不同的样本只是代表不同的初始值罢了?一直对这块很迷惑.

深度学习中的奇怪循环 你知道几个?

Credit: Escher https://www.esmadrid.com/en/whats-on/escher-gaviria-palace 道格拉斯·霍夫斯塔特(Douglas Hofstadter)在他的著作<我是一个奇怪的循环>中提出了这个看法: 最终,我们能够自我感知.自我创造.自我参照. 他将这种自我参照的机制称为思想独特的属性.这个奇怪的循环是在层次结构中跨越多个层次的循环系统.顺着这个循环移动,人们会重新回到自己最初开始的地方. 巧合的是,这个"奇怪的循环&quo

深度 | 伯克利教授Stuart Russell:人工智能基础概念与34个误区

Russell 是加州大学伯克利分校人工智能系统中心创始人兼计算机科学专业教授,同时还是人工智能领域里「标准教科书」<人工智能:一种现代方法>作者(谷歌研究主管 Peter Norvig 也是该书作者).在这篇文章中,他以 Q&A 的方式讲解了人工智能的未来以及常见的误解. 1. 什么是人工智能? 是对让计算机展现出智慧的方法的研究.计算机在获得正确方向后可以高效工作,在这里,正确的方向意味着最有可能实现目标的方向,用术语来说就是最大化效果预期.人工智能需要处理的任务包括学习.推理.规

【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析

AllJoyn开源技术基础概念解析 摘要: 总线(Bus) 实现P2P通信的基础 AllJoyn 的底层协议类似于D-Bus,相当于是跨设备分布式的 D-Bus 总线附件(Bus Attachment) 每一个连接到总线上的Alljoyn应用程序被称为总线附件,可用C++或Java编写 每个总线附件 ... 总线(Bus) 实现P2P通信的基础 AllJoyn 的底层协议类似于D-Bus,相当于是跨设备分布式的 D-Bus总线附件(Bus Attachment) 每一个连接到总线上的Alljoy

深度学习中的“深度”究竟怎么理解?

介绍 为了研究神经网络,我们必须要对什么网络是什么有一个更直观的认识. 一.基本变换:层 神经网络是由一层一层构建的,那么每层究竟在做什么? 数学式子:,其中是输入向量,是输出向量,是偏移向量,是权重矩阵,是激活函数.每一层仅仅是把输入经过如此简单的操作得到. 数学理解:通过如下 5 种对输入空间(输入向量的集合)的操作,完成 输入空间 -> 输出空间 的变换 (矩阵的行空间到列空间). 注:用 "空间" 二字的原因是被分类的并不是单个事物,而是一类事物.空间是指这类事物所有个体

深度学习在美团点评推荐平台排序中的运用

引言 自2012年ImageNet大赛技惊四座后,深度学习已经成为近年来机器学习和人工智能领域中关注度最高的技术.在深度学习出现之前,人们借助SIFT.HOG等算法提取具有良好区分性的特征,再结合SVM等机器学习算法进行图像识别.然而SIFT这类算法提取的特征是有局限性的,导致当时比赛的最好结果的错误率也在26%以上.卷积神经网络(CNN)的首次亮相就将错误率一下由26%降低到15%,同年微软团队发布的论文中显示,通过深度学习可以将ImageNet 2012资料集的错误率降到4.94%. 随后的