精华内容
下载资源
问答
  • “讲看齐、见行动”学习讨论专题研讨会发言稿:以意识形态工作成效凝聚强烈看齐意识.docx
  • 但是这篇博文我最初设计的是使用MATLAB脚本和图像来讨论的,而上篇博文全是公式,因此,还是单独成立了一篇,但是我还是希望看这篇博文之前还是先看看上篇博文。 我默认你已经看了上篇博文。 本博文的讨论建立在一...

    这篇博文本来是和上篇博文一起写的:【 MATLAB 】离散傅里叶级数(DFS)与DFT、DTFT及 z变换之间的关系

    但是这篇博文我最初设计的是使用MATLAB脚本和图像来讨论的,而上篇博文全是公式,因此,还是单独成立了一篇,但是我还是希望看这篇博文之前还是先看看上篇博文。

    我默认你已经看了上篇博文。


    本博文的讨论建立在一个案例的基础上:

    设x(n)是4点序列为:

    x(n) = \left\{\begin{matrix} 1, &0 \leq n \leq 3 \\0, & else \end{matrix}\right.

    计算x(n)的4点DFT(N =4),以及(N = 8,N = 16, N = 128)


    我们知道DFS是在DTFT上的频域采样,采样间隔为 2*pi / N.

    DFT 是一个周期的DFS,因此DFT也是在DTFT上的频域采样,采样间隔同样为 2 * pi / N.

    x(n)的波形图为:

    clc;clear;close all;
    
    % x(n)
    N = 4;
    n = 0:N-1;
    x = [1,1,1,1];
    
    stem(n,x);
    title('Discrete sequence');
    xlabel('n');ylabel('x(n)');
    xlim([0,5]);ylim([-0.2,1.2]);

    我们先作出 x(n) 的 DTFT,也即是离散时间傅里叶变换,给出脚本和图像:

    clc;clear;close all;
    
    % x(n)
    N = 4;
    n = 0:N-1;
    x = [1,1,1,1];
    
    stem(n,x);
    title('Discrete sequence');
    xlabel('n');ylabel('x(n)');
    xlim([0,5]);ylim([-0.2,1.2]);
    
    %Discrete-time Fourier Transform
    K = 500;
    k = 0:1:K;
    w = 2*pi*k/K; %plot DTFT in [0,2pi];
    X = x*exp(-j*n'*w);
    % w = [-fliplr(w),w(2:K+1)];   %plot DTFT in [-pi,pi]
    % X = [fliplr(X),X(2:K+1)];    %plot DTFT in [-pi,pi]
    
    magX = abs(X);
    angX = angle(X)*180/pi;
    
    figure
    subplot(2,1,1);
    plot(w/pi,magX);
    title('Discrete-time Fourier Transform in Magnitude Part');
    xlabel('w in pi units');ylabel('Magnitude of X');
    subplot(2,1,2);
    plot(w/pi,angX);
    title('Discrete-time Fourier Transform in Phase Part');
    xlabel('w in pi units');ylabel('Phase of X ');
    

    关于DTFT的编程案例,之前博文也有:【 MATLAB 】模拟信号采样及离散时间傅里叶变换(DTFT)案例分析


    当N = 4时候的DFT,为了显示出DFT和DTFT之间的关系,我们把DTFT图形和DFT画到了同一张图上:

    clc;clear;close all;
    
    % x(n)
    N = 4;
    n = 0:N-1;
    x = [1,1,1,1];
    
    
    
    %Discrete-time Fourier Transform
    K = 500;
    k = 0:1:K;
    w = 2*pi*k/K; %plot DTFT in [0,2pi];
    X = x*exp(-j*n'*w);
    
    magX = abs(X);
    angX = angle(X)*180/pi;
    
    
    
    %DFT in N = 4
    k = 0:N-1;
    Xk = dft(x,N);
    magXk = abs(Xk);
    phaXk = angle(Xk) * 180/pi;   %angle 。
    k = 2*pi*k/N;          % k in DFT is equal to 2*pi*k/N in DTFT
    
    figure
    subplot(2,1,1);
    stem(k/pi,magXk);
    title('DFT Magnitude of x(n) when N = 4');
    xlabel('k');ylabel('Magnitude Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,magX,'g');
    hold off
    
    subplot(2,1,2);
    stem(k/pi,phaXk);
    title('DFT Phase of x(n) when N = 4');
    xlabel('k');ylabel('Phase Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,angX,'g');
    hold off

    可见,DFT是DTFT上的等间隔采样点。


    当N = 8时候的DFT,为了显示出DFT和DTFT之间的关系,我们把DTFT图形和DFT画到了同一张图上:

    clc;clear;close all;
    
    % x(n)
    N = 4;
    n = 0:N-1;
    x = [1,1,1,1];
    
    
    
    %Discrete-time Fourier Transform
    K = 500;
    k = 0:1:K;
    w = 2*pi*k/K; %plot DTFT in [0,2pi];
    X = x*exp(-j*n'*w);
    
    magX = abs(X);
    angX = angle(X)*180/pi;
    
    
    
    % Zero padding into N = 8 and extended cycle 
    N = 8;
    x = [1,1,1,1,zeros(1,4)];
    
    %DFT in N = 8
    k = 0:N-1;
    Xk = dft(x,N);
    magXk = abs(Xk);
    phaXk = angle(Xk) * 180/pi;   %angle 。
    k = 2*pi*k/N;          % k in DFT is equal to 2*pi*k/N in DTFT
    
    figure
    subplot(2,1,1);
    stem(k/pi,magXk);
    title('DFT Magnitude of x(n) when N = 8');
    xlabel('k');ylabel('Magnitude Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,magX,'g');
    hold off
    
    subplot(2,1,2);
    stem(k/pi,phaXk);
    title('DFT Phase of x(n) when N = 8');
    xlabel('k');ylabel('Phase Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,angX,'g');
    hold off

    相比于N =4,N =8采样点数更密集了。


    当N = 16时候的DFT,为了显示出DFT和DTFT之间的关系,我们把DTFT图形和DFT画到了同一张图上:

    clc;clear;close all;
    
    % x(n)
    N = 4;
    n = 0:N-1;
    x = [1,1,1,1];
    
    
    
    %Discrete-time Fourier Transform
    K = 500;
    k = 0:1:K;
    w = 2*pi*k/K; %plot DTFT in [0,2pi];
    X = x*exp(-j*n'*w);
    
    magX = abs(X);
    angX = angle(X)*180/pi;
    
    
    
    % Zero padding into N = 16 and extended cycle 
    N = 16;
    x = [1,1,1,1,zeros(1,12)];
    
    %DFT in N = 16
    k = 0:N-1;
    Xk = dft(x,N);
    magXk = abs(Xk);
    phaXk = angle(Xk) * 180/pi;   %angle 。
    k = 2*pi*k/N;          % k in DFT is equal to 2*pi*k/N in DTFT
    
    figure
    subplot(2,1,1);
    stem(k/pi,magXk);
    title('DFT Magnitude of x(n) when N = 16');
    xlabel('k');ylabel('Magnitude Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,magX,'g');
    hold off
    
    subplot(2,1,2);
    stem(k/pi,phaXk);
    title('DFT Phase of x(n) when N = 16');
    xlabel('k');ylabel('Phase Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,angX,'g');
    hold off
    


    N = 128的情况:

    clc;clear;close all;
    
    % x(n)
    N = 4;
    n = 0:N-1;
    x = [1,1,1,1];
    
    
    
    %Discrete-time Fourier Transform
    K = 500;
    k = 0:1:K;
    w = 2*pi*k/K; %plot DTFT in [0,2pi];
    X = x*exp(-j*n'*w);
    
    magX = abs(X);
    angX = angle(X)*180/pi;
    
    
    % Zero padding into N = 128 and extended cycle 
    N = 128;
    x = [1,1,1,1,zeros(1,124)];
    
    %DFT in N = 128
    k = 0:N-1;
    Xk = dft(x,N);
    magXk = abs(Xk);
    phaXk = angle(Xk) * 180/pi;   %angle 。
    k = 2*pi*k/N;          % k in DFT is equal to 2*pi*k/N in DTFT
    
    figure
    subplot(2,1,1);
    stem(k/pi,magXk);
    title('DFT Magnitude of x(n) when N = 128');
    xlabel('k');ylabel('Magnitude Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,magX,'g');
    hold off
    
    subplot(2,1,2);
    stem(k/pi,phaXk);
    title('DFT Phase of x(n) when N = 128');
    xlabel('k');ylabel('Phase Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,angX,'g');
    hold off
    
    

    可见,随着周期N 的增大,采样点越密集。



    上面的程序都是我在我写的一个大程序中抽取出来的,最后给出所有程序的一个集合,也就是我最初写的一个程序:

    clc;clear;close all;
    
    % x(n)
    N = 4;
    n = 0:N-1;
    x = [1,1,1,1];
    
    stem(n,x);
    title('Discrete sequence');
    xlabel('n');ylabel('x(n)');
    xlim([0,5]);ylim([-0.2,1.2]);
    
    %Discrete-time Fourier Transform
    K = 500;
    k = 0:1:K;
    w = 2*pi*k/K; %plot DTFT in [0,2pi];
    X = x*exp(-j*n'*w);
    % w = [-fliplr(w),w(2:K+1)];   %plot DTFT in [-pi,pi]
    % X = [fliplr(X),X(2:K+1)];    %plot DTFT in [-pi,pi]
    
    magX = abs(X);
    angX = angle(X)*180/pi;
    
    figure
    subplot(2,1,1);
    plot(w/pi,magX);
    title('Discrete-time Fourier Transform in Magnitude Part');
    xlabel('w in pi units');ylabel('Magnitude of X');
    subplot(2,1,2);
    plot(w/pi,angX);
    title('Discrete-time Fourier Transform in Phase Part');
    xlabel('w in pi units');ylabel('Phase of X ');
    
    
    %DFT in N = 4
    k = 0:N-1;
    Xk = dft(x,N);
    magXk = abs(Xk);
    phaXk = angle(Xk) * 180/pi;   %angle 。
    k = 2*pi*k/N;          % k in DFT is equal to 2*pi*k/N in DTFT
    
    figure
    subplot(2,1,1);
    stem(k/pi,magXk);
    title('DFT Magnitude of x(n) when N = 4');
    xlabel('k');ylabel('Magnitude Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,magX,'g');
    hold off
    
    subplot(2,1,2);
    stem(k/pi,phaXk);
    title('DFT Phase of x(n) when N = 4');
    xlabel('k');ylabel('Phase Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,angX,'g');
    hold off
    
    % Zero padding into N = 8 and extended cycle 
    N = 8;
    x = [1,1,1,1,zeros(1,4)];
    
    %DFT in N = 8
    k = 0:N-1;
    Xk = dft(x,N);
    magXk = abs(Xk);
    phaXk = angle(Xk) * 180/pi;   %angle 。
    k = 2*pi*k/N;          % k in DFT is equal to 2*pi*k/N in DTFT
    
    figure
    subplot(2,1,1);
    stem(k/pi,magXk);
    title('DFT Magnitude of x(n) when N = 8');
    xlabel('k');ylabel('Magnitude Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,magX,'g');
    hold off
    
    subplot(2,1,2);
    stem(k/pi,phaXk);
    title('DFT Phase of x(n) when N = 8');
    xlabel('k');ylabel('Phase Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,angX,'g');
    hold off
    
    
    % Zero padding into N = 16 and extended cycle 
    N = 16;
    x = [1,1,1,1,zeros(1,12)];
    
    %DFT in N = 16
    k = 0:N-1;
    Xk = dft(x,N);
    magXk = abs(Xk);
    phaXk = angle(Xk) * 180/pi;   %angle 。
    k = 2*pi*k/N;          % k in DFT is equal to 2*pi*k/N in DTFT
    
    figure
    subplot(2,1,1);
    stem(k/pi,magXk);
    title('DFT Magnitude of x(n) when N = 16');
    xlabel('k');ylabel('Magnitude Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,magX,'g');
    hold off
    
    subplot(2,1,2);
    stem(k/pi,phaXk);
    title('DFT Phase of x(n) when N = 16');
    xlabel('k');ylabel('Phase Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,angX,'g');
    hold off
    
    
    % Zero padding into N = 128 and extended cycle 
    N = 128;
    x = [1,1,1,1,zeros(1,124)];
    
    %DFT in N = 128
    k = 0:N-1;
    Xk = dft(x,N);
    magXk = abs(Xk);
    phaXk = angle(Xk) * 180/pi;   %angle 。
    k = 2*pi*k/N;          % k in DFT is equal to 2*pi*k/N in DTFT
    
    figure
    subplot(2,1,1);
    stem(k/pi,magXk);
    title('DFT Magnitude of x(n) when N = 128');
    xlabel('k');ylabel('Magnitude Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,magX,'g');
    hold off
    
    subplot(2,1,2);
    stem(k/pi,phaXk);
    title('DFT Phase of x(n) when N = 128');
    xlabel('k');ylabel('Phase Part');
    
    % Auxiliary mapping, highlighting the relationship between DFT and DTFT
    hold on 
    plot(w/pi,angX,'g');
    hold off
    
    
    

    最后需要说明的是上面通过补零的方式来增大最初给出的有限长序列的周期,这样只会更加DFT在DTFT上的采样间隔,也就是频率分辨率。

    补零给出了一种高密度的谱并对画图提供了一种更好的展现形式。

    但是它并没有给出一个高分辨率的谱,因为没有任何新的信息附加到这个信号上;而仅是在数据中添加了额外的零值。

    下篇博文我们继续说明,如何才能得到高分辨率的谱,我们的方法是从实验中或观察中获得更多的数据。

     

     

     

     

     

    展开全文
  • 机器学习入门好文,强烈推荐

    万次阅读 多人点赞 2017-02-01 23:44:30
    转自 飞鸟各投林 史上最强----机器学习经典总结---入门必读----心血总结-----回味无穷 让我们从机器学习谈起 导读:在本篇文章中,将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人...

    转自 飞鸟各投林

    史上最强----机器学习经典总结---入门必读----心血总结-----回味无穷

    让我们从机器学习谈起


    导读:在本篇文章中,将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践。当然,本文也面对一般读者,不会对阅读有相关的前提要求。

     

    在进入正题前,我想读者心中可能会有一个疑惑:机器学习有什么重要性,以至于要阅读完这篇非常长的文章呢?

     

    我并不直接回答这个问题前。相反,我想请大家看两张图,下图是图一:


    图1 机器学习界的执牛耳者与互联网界的大鳄的联姻

     

    这幅图上上的三人是当今机器学习界的执牛耳者。中间的是Geoffrey Hinton, 加拿大多伦多大学的教授,如今被聘为“Google大脑”的负责人。右边的是Yann LeCun, 纽约大学教授,如今是Facebook人工智能实验室的主任。而左边的大家都很熟悉,Andrew Ng,中文名吴恩达,斯坦福大学副教授,如今也是“百度大脑”的负责人与百度首席科学家。这三位都是目前业界炙手可热的大牛,被互联网界大鳄求贤若渴的聘请,足见他们的重要性。而他们的研究方向,则全部都是机器学习的子类--深度学习。

     

    下图是图二:

    图2 语音助手产品

     

    这幅图上描述的是什么?Windows Phone上的语音助手Cortana,名字来源于《光环》中士官长的助手。相比其他竞争对手,微软很迟才推出这个服务。Cortana背后的核心技术是什么,为什么它能够听懂人的语音?事实上,这个技术正是机器学习。机器学习是所有语音助手产品(包括Apple的siri与Google的Now)能够跟人交互的关键技术。

     

    通过上面两图,我相信大家可以看出机器学习似乎是一个很重要的,有很多未知特性的技术。学习它似乎是一件有趣的任务。实际上,学习机器学习不仅可以帮助我们了解互联网界最新的趋势,同时也可以知道伴随我们的便利服务的实现技术。

     

    机器学习是什么,为什么它能有这么大的魔力,这些问题正是本文要回答的。同时,本文叫做“从机器学习谈起”,因此会以漫谈的形式介绍跟机器学习相关的所有内容,包括学科(如数据挖掘、计算机视觉等),算法(神经网络,svm)等等。本文的主要目录如下:

     

    1.一个故事说明什么是机器学习

    2.机器学习的定义

    3.机器学习的范围

    4.机器学习的方法

    5.机器学习的应用--大数据

    6.机器学习的子类--深度学习

    7.机器学习的父类--人工智能

    8.机器学习的思考--计算机的潜意识

    9.总结

    10.后记

     

    1.一个故事说明什么是机器学习

     

    机器学习这个词是让人疑惑的,首先它是英文名称Machine Learning(简称ML)的直译,在计算界Machine一般指计算机。这个名字使用了拟人的手法,说明了这门技术是让机器“学习”的技术。但是计算机是死的,怎么可能像人类一样“学习”呢?

     

    传统上如果我们想让计算机工作,我们给它一串指令,然后它遵照这个指令一步步执行下去。有因有果,非常明确。但这样的方式在机器学习中行不通。机器学习根本不接受你输入的指令,相反,它接受你输入的数据! 也就是说,机器学习是一种让计算机利用数据而不是指令来进行各种工作的方法。这听起来非常不可思议,但结果上却是非常可行的。“统计”思想将在你学习“机器学习”相关理念时无时无刻不伴随,相关而不是因果的概念将是支撑机器学习能够工作的核心概念。你会颠覆对你以前所有程序中建立的因果无处不在的根本理念。

     

    下面我通过一个故事来简单地阐明什么是机器学习。这个故事比较适合用在知乎上作为一个概念的阐明。在这里,这个故事没有展开,但相关内容与核心是存在的。如果你想简单的了解一下什么是机器学习,那么看完这个故事就足够了。如果你想了解机器学习的更多知识以及与它关联紧密的当代技术,那么请你继续往下看,后面有更多的丰富的内容。

     

    这个例子来源于我真实的生活经验,我在思考这个问题的时候突然发现它的过程可以被扩充化为一个完整的机器学习的过程,因此我决定使用这个例子作为所有介绍的开始。这个故事称为“等人问题”。

     

    我相信大家都有跟别人相约,然后等人的经历。现实中不是每个人都那么守时的,于是当你碰到一些爱迟到的人,你的时间不可避免的要浪费。我就碰到过这样的一个例子。

     

    对我的一个朋友小Y而言,他就不是那么守时,最常见的表现是他经常迟到。当有一次我跟他约好3点钟在某个麦当劳见面时,在我出门的那一刻我突然想到一个问题:我现在出发合适么?我会不会又到了地点后,花上30分钟去等他?我决定采取一个策略解决这个问题。

     

    要想解决这个问题,有好几种方法。第一种方法是采用知识:我搜寻能够解决这个问题的知识。但很遗憾,没有人会把如何等人这个问题作为知识传授,因此我不可能找到已有的知识能够解决这个问题。第二种方法是问他人:我去询问他人获得解决这个问题的能力。但是同样的,这个问题没有人能够解答,因为可能没人碰上跟我一样的情况。第三种方法是准则法:我问自己的内心,我有否设立过什么准则去面对这个问题?例如,无论别人如何,我都会守时到达。但我不是个死板的人,我没有设立过这样的规则。

     

    事实上,我相信有种方法比以上三种都合适。我把过往跟小Y相约的经历在脑海中重现一下,看看跟他相约的次数中,迟到占了多大的比例。而我利用这来预测他这次迟到的可能性。如果这个值超出了我心里的某个界限,那我选择等一会再出发。假设我跟小Y约过5次,他迟到的次数是1次,那么他按时到的比例为80%,我心中的阈值为70%,我认为这次小Y应该不会迟到,因此我按时出门。如果小Y在5次迟到的次数中占了4次,也就是他按时到达的比例为20%,由于这个值低于我的阈值,因此我选择推迟出门的时间。这个方法从它的利用层面来看,又称为经验法。在经验法的思考过程中,我事实上利用了以往所有相约的数据。因此也可以称之为依据数据做的判断。

     

    依据数据所做的判断跟机器学习的思想根本上是一致的。

     

    刚才的思考过程我只考虑“频次”这种属性。在真实的机器学习中,这可能都不算是一个应用。一般的机器学习模型至少考虑两个量:一个是因变量,也就是我们希望预测的结果,在这个例子里就是小Y迟到与否的判断。另一个是自变量,也就是用来预测小Y是否迟到的量。假设我把时间作为自变量,譬如我发现小Y所有迟到的日子基本都是星期五,而在非星期五情况下他基本不迟到。于是我可以建立一个模型,来模拟小Y迟到与否跟日子是否是星期五的概率。见下图:

    图3 决策树模型

     

    这样的图就是一个最简单的机器学习模型,称之为决策树。

     

    当我们考虑的自变量只有一个时,情况较为简单。如果把我们的自变量再增加一个。例如小Y迟到的部分情况时是在他开车过来的时候(你可以理解为他开车水平较臭,或者路较堵)。于是我可以关联考虑这些信息。建立一个更复杂的模型,这个模型包含两个自变量与一个因变量。

     

    再更复杂一点,小Y的迟到跟天气也有一定的原因,例如下雨的时候,这时候我需要考虑三个自变量。

     

    如果我希望能够预测小Y迟到的具体时间,我可以把他每次迟到的时间跟雨量的大小以及前面考虑的自变量统一建立一个模型。于是我的模型可以预测值,例如他大概会迟到几分钟。这样可以帮助我更好的规划我出门的时间。在这样的情况下,决策树就无法很好地支撑了,因为决策树只能预测离散值。我们可以用节2所介绍的线型回归方法建立这个模型。

     

    如果我把这些建立模型的过程交给电脑。比如把所有的自变量和因变量输入,然后让计算机帮我生成一个模型,同时让计算机根据我当前的情况,给出我是否需要迟出门,需要迟几分钟的建议。那么计算机执行这些辅助决策的过程就是机器学习的过程。

     

    机器学习方法是计算机利用已有的数据(经验),得出了某种模型(迟到的规律),并利用此模型预测未来(是否迟到)的一种方法。

     

    通过上面的分析,可以看出机器学习与人类思考的经验过程是类似的,不过它能考虑更多的情况,执行更加复杂的计算。事实上,机器学习的一个主要目的就是把人类思考归纳经验的过程转化为计算机通过对数据的处理计算得出模型的过程。经过计算机得出的模型能够以近似于人的方式解决很多灵活复杂的问题。

     

    下面,我会开始对机器学习的正式介绍,包括定义、范围,方法、应用等等,都有所包含。

     

    2.机器学习的定义

     

    从广义上来说,机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。

     

    让我们具体看一个例子。


    图4 房价的例子

     

    拿国民话题的房子来说。现在我手里有一栋房子需要售卖,我应该给它标上多大的价格?房子的面积是100平方米,价格是100万,120万,还是140万?

     

    很显然,我希望获得房价与面积的某种规律。那么我该如何获得这个规律?用报纸上的房价平均数据么?还是参考别人面积相似的?无论哪种,似乎都并不是太靠谱。

     

    我现在希望获得一个合理的,并且能够最大程度的反映面积与房价关系的规律。于是我调查了周边与我房型类似的一些房子,获得一组数据。这组数据中包含了大大小小房子的面积与价格,如果我能从这组数据中找出面积与价格的规律,那么我就可以得出房子的价格。

     

    对规律的寻找很简单,拟合出一条直线,让它“穿过”所有的点,并且与各个点的距离尽可能的小。

     

    通过这条直线,我获得了一个能够最佳反映房价与面积规律的规律。这条直线同时也是一个下式所表明的函数:

     

      房价 = 面积 * a + b

     

    上述中的a、b都是直线的参数。获得这些参数以后,我就可以计算出房子的价格。

     

    假设a = 0.75,b = 50,则房价 = 100 * 0.75 + 50 = 125万。这个结果与我前面所列的100万,120万,140万都不一样。由于这条直线综合考虑了大部分的情况,因此从“统计”意义上来说,这是一个最合理的预测。

     

    在求解过程中透露出了两个信息:
    1.房价模型是根据拟合的函数类型决定的。如果是直线,那么拟合出的就是直线方程。如果是其他类型的线,例如抛物线,那么拟合出的就是抛物线方程。机器学习有众多算法,一些强力算法可以拟合出复杂的非线性模型,用来反映一些不是直线所能表达的情况。
    2.如果我的数据越多,我的模型就越能够考虑到越多的情况,由此对于新情况的预测效果可能就越好。这是机器学习界“数据为王”思想的一个体现。一般来说(不是绝对),数据越多,最后机器学习生成的模型预测的效果越好。

     

    通过我拟合直线的过程,我们可以对机器学习过程做一个完整的回顾。首先,我们需要在计算机中存储历史的数据。接着,我们将这些 数据通过机器学习算法进行处理,这个过程在机器学习中叫做“训练”,处理的结果可以被我们用来对新的数据进行预测,这个结果一般称之为“模型”。对新数据 的预测过程在机器学习中叫做“预测”。“训练”与“预测”是机器学习的两个过程,“模型”则是过程的中间输出结果,“训练”产生“模型”,“模型”指导 “预测”。

     

    让我们把机器学习的过程与人类对历史经验归纳的过程做个比对。

    图5 机器学习与人类思考的类比

     

    人类在成长、生活过程中积累了很多的历史与经验。人类定期地对这些经验进行“归纳”,获得了生活的“规律”。当人类遇到未知的问题或者需要对未来进行“推测”的时候,人类使用这些“规律”,对未知问题与未来进行“推测”,从而指导自己的生活和工作。

     

    机器学习中的“训练”与“预测”过程可以对应到人类的“归纳”和“推测”过程。通过这样的对应,我们可以发现,机器学习的思想并不复杂,仅仅是对人类在生活中学习成长的一个模拟。由于机器学习不是基于编程形成的结果,因此它的处理过程不是因果的逻辑,而是通过归纳思想得出的相关性结论。

     

    这也可以联想到人类为什么要学习历史,历史实际上是人类过往经验的总结。有句话说得很好,“历史往往不一样,但历史总是惊人的相似”。通过学习历史,我们从历史中归纳出人生与国家的规律,从而指导我们的下一步工作,这是具有莫大价值的。当代一些人忽视了历史的本来价值,而是把其作为一种宣扬功绩的手段,这其实是对历史真实价值的一种误用。

     

    3.机器学习的范围

     

    上文虽然说明了机器学习是什么,但是并没有给出机器学习的范围。

     

    其实,机器学习跟模式识别,统计学习,数据挖掘,计算机视觉,语音识别,自然语言处理等领域有着很深的联系。

     

    从范围上来说,机器学习跟模式识别,统计学习,数据挖掘是类似的,同时,机器学习与其他领域的处理技术的结合,形成了计算机视觉、语音识别、自然语言处理等交叉学科。因此,一般说数据挖掘时,可以等同于说机器学习。同时,我们平常所说的机器学习应用,应该是通用的,不仅仅局限在结构化数据,还有图像,音频等应用。

     

    在这节对机器学习这些相关领域的介绍有助于我们理清机器学习的应用场景与研究范围,更好的理解后面的算法与应用层次。

     

    下图是机器学习所牵扯的一些相关范围的学科与研究领域。


    图6 机器学习与相关学科

     

    模式识别
    模式识别=机器学习。两者的主要区别在于前者是从工业界发展起来的概念,后者则主要源自计算机学科。在著名的《Pattern Recognition And Machine Learning》这本书中,Christopher M. Bishop在开头是这样说的“模式识别源自工业界,而机器学习来自于计算机学科。不过,它们中的活动可以被视为同一个领域的两个方面,同时在过去的10年间,它们都有了长足的发展”。

     

    数据挖掘
    数据挖掘=机器学习+数据库。这几年数据挖掘的概念实在是太耳熟能详。几乎等同于炒作。但凡说数据挖掘都会吹嘘数据挖掘如何如何,例如从数据中挖出金子,以及将废弃的数据转化为价值等等。但是,我尽管可能会挖出金子,但我也可能挖的是“石头”啊。这个说法的意思是,数据挖掘仅仅是一种思考方式,告诉我们应该尝试从数据中挖掘出知识,但不是每个数据都能挖掘出金子的,所以不要神话它。一个系统绝对不会因为上了一个数据挖掘模块就变得无所不能(这是IBM最喜欢吹嘘的),恰恰相反,一个拥有数据挖掘思维的人员才是关键,而且他还必须对数据有深刻的认识,这样才可能从数据中导出模式指引业务的改善。大部分数据挖掘中的算法是机器学习的算法在数据库中的优化。

     

    统计学习
    统计学习近似等于机器学习。统计学习是个与机器学习高度重叠的学科。因为机器学习中的大多数方法来自统计学,甚至可以认为,统计学的发展促进机器学习的繁荣昌盛。例如著名的支持向量机算法,就是源自统计学科。但是在某种程度上两者是有分别的,这个分别在于:统计学习者重点关注的是统计模型的发展与优化,偏数学,而机器学习者更关注的是能够解决问题,偏实践,因此机器学习研究者会重点研究学习算法在计算机上执行的效率与准确性的提升。

     

    计算机视觉
    计算机视觉=图像处理+机器学习。图像处理技术用于将图像处理为适合进入机器学习模型中的输入,机器学习则负责从图像中识别出相关的模式。计算机视觉相关的应用非常的多,例如百度识图、手写字符识别、车牌识别等等应用。这个领域是应用前景非常火热的,同时也是研究的热门方向。随着机器学习的新领域深度学习的发展,大大促进了计算机图像识别的效果,因此未来计算机视觉界的发展前景不可估量。

     

    语音识别
    语音识别=语音处理+机器学习。语音识别就是音频处理技术与机器学习的结合。语音识别技术一般不会单独使用,一般会结合自然语言处理的相关技术。目前的相关应用有苹果的语音助手siri等。

     

    自然语言处理
    自然语言处理=文本处理+机器学习。自然语言处理技术主要是让机器理解人类的语言的一门领域。在自然语言处理技术中,大量使用了编译原理相关的技术,例如词法分析,语法分析等等,除此之外,在理解这个层面,则使用了语义理解,机器学习等技术。作为唯一由人类自身创造的符号,自然语言处理一直是机器学习界不断研究的方向。按照百度机器学习专家余凯的说法“听与看,说白了就是阿猫和阿狗都会的,而只有语言才是人类独有的”。如何利用机器学习技术进行自然语言的的深度理解,一直是工业和学术界关注的焦点。

     

    可以看出机器学习在众多领域的外延和应用。机器学习技术的发展促使了很多智能领域的进步,改善着我们的生活。

     

    4.机器学习的方法

     

    通过上节的介绍我们知晓了机器学习的大致范围,那么机器学习里面究竟有多少经典的算法呢?在这个部分我会简要介绍一下机器学习中的经典代表方法。这部分介绍的重点是这些方法内涵的思想,数学与实践细节不会在这讨论。

     

    1、回归算法

     

    在大部分机器学习课程中,回归算法都是介绍的第一个算法。原因有两个:一.回归算法比较简单,介绍它可以让人平滑地从统计学迁移到机器学习中。二.回归算法是后面若干强大算法的基石,如果不理解回归算法,无法学习那些强大的算法。回归算法有两个重要的子类:即线性回归和逻辑回归。

     

    线性回归就是我们前面说过的房价求解问题。如何拟合出一条直线最佳匹配我所有的数据?一般使用“最小二乘法”来求解。“最小二乘法”的思想是这样的,假设我们拟合出的直线代表数据的真实值,而观测到的数据代表拥有误差的值。为了尽可能减小误差的影响,需要求解一条直线使所有误差的平方和最小。最小二乘法将最优问题转化为求函数极值问题。函数极值在数学上我们一般会采用求导数为0的方法。但这种做法并不适合计算机,可能求解不出来,也可能计算量太大。

     

    计算机科学界专门有一个学科叫“数值计算”,专门用来提升计算机进行各类计算时的准确性和效率问题。例如,著名的“梯度下降”以及“牛顿法”就是数值计算中的经典算法,也非常适合来处理求解函数极值的问题。梯度下降法是解决回归模型中最简单且有效的方法之一。从严格意义上来说,由于后文中的神经网络和推荐算法中都有线性回归的因子,因此梯度下降法在后面的算法实现中也有应用。

     

    逻辑回归是一种与线性回归非常类似的算法,但是,从本质上讲,线型回归处理的问题类型与逻辑回归不一致。线性回归处理的是数值问题,也就是最后预测出的结果是数字,例如房价。而逻辑回归属于分类算法,也就是说,逻辑回归预测结果是离散的分类,例如判断这封邮件是否是垃圾邮件,以及用户是否会点击此广告等等。

     

    实现方面的话,逻辑回归只是对对线性回归的计算结果加上了一个Sigmoid函数,将数值结果转化为了0到1之间的概率(Sigmoid函数的图像一般来说并不直观,你只需要理解对数值越大,函数越逼近1,数值越小,函数越逼近0),接着我们根据这个概率可以做预测,例如概率大于0.5,则这封邮件就是垃圾邮件,或者肿瘤是否是恶性的等等。从直观上来说,逻辑回归是画出了一条分类线,见下图。

    图7 逻辑回归的直观解释

     

    假设我们有一组肿瘤患者的数据,这些患者的肿瘤中有些是良性的(图中的蓝色点),有些是恶性的(图中的红色点)。这里肿瘤的红蓝色可以被称作数据的“标签”。同时每个数据包括两个“特征”:患者的年龄与肿瘤的大小。我们将这两个特征与标签映射到这个二维空间上,形成了我上图的数据。

     

    当我有一个绿色的点时,我该判断这个肿瘤是恶性的还是良性的呢?根据红蓝点我们训练出了一个逻辑回归模型,也就是图中的分类线。这时,根据绿点出现在分类线的左侧,因此我们判断它的标签应该是红色,也就是说属于恶性肿瘤。

     

    逻辑回归算法划出的分类线基本都是线性的(也有划出非线性分类线的逻辑回归,不过那样的模型在处理数据量较大的时候效率会很低),这意味着当两类之间的界线不是线性时,逻辑回归的表达能力就不足。下面的两个算法是机器学习界最强大且重要的算法,都可以拟合出非线性的分类线。

     

    2、神经网络

     

    神经网络(也称之为人工神经网络,ANN)算法是80年代机器学习界非常流行的算法,不过在90年代中途衰落。现在,携着“深度学习”之势,神经网络重装归来,重新成为最强大的机器学习算法之一。

     

    神经网络的诞生起源于对大脑工作机理的研究。早期生物界学者们使用神经网络来模拟大脑。机器学习的学者们使用神经网络进行机器学习的实验,发现在视觉与语音的识别上效果都相当好。在BP算法(加速神经网络训练过程的数值算法)诞生以后,神经网络的发展进入了一个热潮。BP算法的发明人之一是前面介绍的机器学习大牛Geoffrey Hinton(图1中的中间者)。

     

    具体说来,神经网络的学习机理是什么?简单来说,就是分解与整合。在著名的Hubel-Wiesel试验中,学者们研究猫的视觉分析机理是这样的。


    图8 Hubel-Wiesel试验与大脑视觉机理

     

    比方说,一个正方形,分解为四个折线进入视觉处理的下一层中。四个神经元分别处理一个折线。每个折线再继续被分解为两条直线,每条直线再被分解为黑白两个面。于是,一个复杂的图像变成了大量的细节进入神经元,神经元处理以后再进行整合,最后得出了看到的是正方形的结论。这就是大脑视觉识别的机理,也是神经网络工作的机理。

     

    让我们看一个简单的神经网络的逻辑架构。在这个网络中,分成输入层,隐藏层,和输出层。输入层负责接收信号,隐藏层负责对数据的分解与处理,最后的结果被整合到输出层。每层中的一个圆代表一个处理单元,可以认为是模拟了一个神经元,若干个处理单元组成了一个层,若干个层再组成了一个网络,也就是"神经网络"。


    图9 神经网络的逻辑架构

     

    在神经网络中,每个处理单元事实上就是一个逻辑回归模型,逻辑回归模型接收上层的输入,把模型的预测结果作为输出传输到下一个层次。通过这样的过程,神经网络可以完成非常复杂的非线性分类。

     

    下图会演示神经网络在图像识别领域的一个著名应用,这个程序叫做LeNet,是一个基于多个隐层构建的神经网络。通过LeNet可以识别多种手写数字,并且达到很高的识别精度与拥有较好的鲁棒性。

    图10 LeNet的效果展示

     

    右下方的方形中显示的是输入计算机的图像,方形上方的红色字样“answer”后面显示的是计算机的输出。左边的三条竖直的图像列显示的是神经网络中三个隐藏层的输出,可以看出,随着层次的不断深入,越深的层次处理的细节越低,例如层3基本处理的都已经是线的细节了。LeNet的发明人就是前文介绍过的机器学习的大牛Yann LeCun(图1右者)。

     

    进入90年代,神经网络的发展进入了一个瓶颈期。其主要原因是尽管有BP算法的加速,神经网络的训练过程仍然很困难。因此90年代后期支持向量机(SVM)算法取代了神经网络的地位。

     

    3、SVM(支持向量机)

     

    支持向量机算法是诞生于统计学习界,同时在机器学习界大放光彩的经典算法。

     

    支持向量机算法从某种意义上来说是逻辑回归算法的强化:通过给予逻辑回归算法更严格的优化条件,支持向量机算法可以获得比逻辑回归更好的分类界线。但是如果没有某类函数技术,则支持向量机算法最多算是一种更好的线性分类技术。

     

    但是,通过跟高斯“核”的结合,支持向量机可以表达出非常复杂的分类界线,从而达成很好的的分类效果。“核”事实上就是一种特殊的函数,最典型的特征就是可以将低维的空间映射到高维的空间。

     

    例如下图所示:

    图11 支持向量机图例

     

    我们如何在二维平面划分出一个圆形的分类界线?在二维平面可能会很困难,但是通过“核”可以将二维空间映射到三维空间,然后使用一个线性平面就可以达成类似效果。也就是说,二维平面划分出的非线性分类界线可以等价于三维平面的线性分类界线。于是,我们可以通过在三维空间中进行简单的线性划分就可以达到在二维平面中的非线性划分效果。

    图12 三维空间的切割

     

    支持向量机是一种数学成分很浓的机器学习算法(相对的,神经网络则有生物科学成分)。在算法的核心步骤中,有一步证明,即将数据从低维映射到高维不会带来最后计算复杂性的提升。于是,通过支持向量机算法,既可以保持计算效率,又可以获得非常好的分类效果。因此支持向量机在90年代后期一直占据着机器学习中最核心的地位,基本取代了神经网络算法。直到现在神经网络借着深度学习重新兴起,两者之间才又发生了微妙的平衡转变。

     

    4、聚类算法

     

    前面的算法中的一个显著特征就是我的训练数据中包含了标签,训练出的模型可以对其他未知数据预测标签。在下面的算法中,训练数据都是不含标签的,而算法的目的则是通过训练,推测出这些数据的标签。这类算法有一个统称,即无监督算法(前面有标签的数据的算法则是有监督算法)。无监督算法中最典型的代表就是聚类算法。

     

    让我们还是拿一个二维的数据来说,某一个数据包含两个特征。我希望通过聚类算法,给他们中不同的种类打上标签,我该怎么做呢?简单来说,聚类算法就是计算种群中的距离,根据距离的远近将数据划分为多个族群。

     

    聚类算法中最典型的代表就是K-Means算法。

     

    5、降维算法

     

    降维算法也是一种无监督学习算法,其主要特征是将数据从高维降低到低维层次。在这里,维度其实表示的是数据的特征量的大小,例如,房价包含房子的长、宽、面积与房间数量四个特征,也就是维度为4维的数据。可以看出来,长与宽事实上与面积表示的信息重叠了,例如面积=长 × 宽。通过降维算法我们就可以去除冗余信息,将特征减少为面积与房间数量两个特征,即从4维的数据压缩到2维。于是我们将数据从高维降低到低维,不仅利于表示,同时在计算上也能带来加速。

     

    刚才说的降维过程中减少的维度属于肉眼可视的层次,同时压缩也不会带来信息的损失(因为信息冗余了)。如果肉眼不可视,或者没有冗余的特征,降维算法也能工作,不过这样会带来一些信息的损失。但是,降维算法可以从数学上证明,从高维压缩到的低维中最大程度地保留了数据的信息。因此,使用降维算法仍然有很多的好处。

     

    降维算法的主要作用是压缩数据与提升机器学习其他算法的效率。通过降维算法,可以将具有几千个特征的数据压缩至若干个特征。另外,降维算法的另一个好处是数据的可视化,例如将5维的数据压缩至2维,然后可以用二维平面来可视。降维算法的主要代表是PCA算法(即主成分分析算法)。

     

    6、推荐算法

     

    推荐算法是目前业界非常火的一种算法,在电商界,如亚马逊,天猫,京东等得到了广泛的运用。推荐算法的主要特征就是可以自动向用户推荐他们最感兴趣的东西,从而增加购买率,提升效益。推荐算法有两个主要的类别:

     

    一类是基于物品内容的推荐,是将与用户购买的内容近似的物品推荐给用户,这样的前提是每个物品都得有若干个标签,因此才可以找出与用户购买物品类似的物品,这样推荐的好处是关联程度较大,但是由于每个物品都需要贴标签,因此工作量较大。

     

    另一类是基于用户相似度的推荐,则是将与目标用户兴趣相同的其他用户购买的东西推荐给目标用户,例如小A历史上买了物品B和C,经过算法分析,发现另一个与小A近似的用户小D购买了物品E,于是将物品E推荐给小A。

     

    两类推荐都有各自的优缺点,在一般的电商应用中,一般是两类混合使用。推荐算法中最有名的算法就是协同过滤算法。

     

    7、其他

     

    除了以上算法之外,机器学习界还有其他的如高斯判别,朴素贝叶斯,决策树等等算法。但是上面列的六个算法是使用最多,影响最广,种类最全的典型。机器学习界的一个特色就是算法众多,发展百花齐放。

     

    下面做一个总结,按照训练的数据有无标签,可以将上面算法分为监督学习算法和无监督学习算法,但推荐算法较为特殊,既不属于监督学习,也不属于非监督学习,是单独的一类。

     

    监督学习算法:
    线性回归,逻辑回归,神经网络,SVM

     

    无监督学习算法:
    聚类算法,降维算法

     

    特殊算法:
    推荐算法

     

    除了这些算法以外,有一些算法的名字在机器学习领域中也经常出现。但他们本身并不算是一个机器学习算法,而是为了解决某个子问题而诞生的。你可以理解他们为以上算法的子算法,用于大幅度提高训练过程。其中的代表有:梯度下降法,主要运用在线型回归,逻辑回归,神经网络,推荐算法中;牛顿法,主要运用在线型回归中;BP算法,主要运用在神经网络中;SMO算法,主要运用在SVM中。

     

    5.机器学习的应用--大数据

     

    说完机器学习的方法,下面要谈一谈机器学习的应用了。无疑,在2010年以前,机器学习的应用在某些特定领域发挥了巨大的作用,如车牌识别,网络攻击防范,手写字符识别等等。但是,从2010年以后,随着大数据概念的兴起,机器学习大量的应用都与大数据高度耦合,几乎可以认为大数据是机器学习应用的最佳场景。

     

    譬如,但凡你能找到的介绍大数据魔力的文章,都会说大数据如何准确准确预测到了某些事。例如经典的Google利用大数据预测了H1N1在美国某小镇的爆发。

    图13 Google成功预测H1N1

     

    百度预测2014年世界杯,从淘汰赛到决赛全部预测正确。

    图14 百度世界杯成功预测了所有比赛结果

     

    这些实在太神奇了,那么究竟是什么原因导致大数据具有这些魔力的呢?简单来说,就是机器学习技术。正是基于机器学习技术的应用,数据才能发挥其魔力。

     

    大数据的核心是利用数据的价值,机器学习是利用数据价值的关键技术,对于大数据而言,机器学习是不可或缺的。相反,对于机器学习而言,越多的数据会越 可能提升模型的精确性,同时,复杂的机器学习算法的计算时间也迫切需要分布式计算与内存计算这样的关键技术。因此,机器学习的兴盛也离不开大数据的帮助。 大数据与机器学习两者是互相促进,相依相存的关系。

     

    机器学习与大数据紧密联系。但是,必须清醒的认识到,大数据并不等同于机器学习,同理,机器学习也不等同于大数据。大数据中包含有分布式计算,内存数据库,多维分析等等多种技术。单从分析方法来看,大数据也包含以下四种分析方法:

     

    1.大数据,小分析:即数据仓库领域的OLAP分析思路,也就是多维分析思想。
    2.大数据,大分析:这个代表的就是数据挖掘与机器学习分析法。
    3.流式分析:这个主要指的是事件驱动架构。
    4.查询分析:经典代表是NoSQL数据库。

     

    也就是说,机器学习仅仅是大数据分析中的一种而已。尽管机器学习的一些结果具有很大的魔力,在某种场合下是大数据价值最好的说明。但这并不代表机器学习是大数据下的唯一的分析方法。

     

    机器学习与大数据的结合产生了巨大的价值。基于机器学习技术的发展,数据能够“预测”。对人类而言,积累的经验越丰富,阅历也广泛,对未来的判断越准确。例如常说的“经验丰富”的人比“初出茅庐”的小伙子更有工作上的优势,就在于经验丰富的人获得的规律比他人更准确。而在机器学习领域,根据著名的一个实验,有效的证实了机器学习界一个理论:即机器学习模型的数据越多,机器学习的预测的效率就越好。见下图:

    图15 机器学习准确率与数据的关系

     

    通过这张图可以看出,各种不同算法在输入的数据量达到一定级数后,都有相近的高准确度。于是诞生了机器学习界的名言:成功的机器学习应用不是拥有最好的算法,而是拥有最多的数据!

     

    在大数据的时代,有好多优势促使机器学习能够应用更广泛。例如随着物联网和移动设备的发展,我们拥有的数据越来越多,种类也包括图片、文本、视频等非结构化数据,这使得机器学习模型可以获得越来越多的数据。同时大数据技术中的分布式计算Map-Reduce使得机器学习的速度越来越快,可以更方便的使用。种种优势使得在大数据时代,机器学习的优势可以得到最佳的发挥。

     

    6.机器学习的子类--深度学习

     

    近来,机器学习的发展产生了一个新的方向,即“深度学习”。

     

    虽然深度学习这四字听起来颇为高大上,但其理念却非常简单,就是传统的神经网络发展到了多隐藏层的情况。

     

    在上文介绍过,自从90年代以后,神经网络已经消寂了一段时间。但是BP算法的发明人Geoffrey Hinton一直没有放弃对神经网络的研究。由于神经网络在隐藏层扩大到两个以上,其训练速度就会非常慢,因此实用性一直低于支持向量机。2006年,Geoffrey Hinton在科学杂志《Science》上发表了一篇文章,论证了两个观点:

     

      1.多隐层的神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;

      2.深度神经网络在训练上的难度,可以通过“逐层初始化” 来有效克服。


    图16 Geoffrey Hinton与他的学生在Science上发表文章

     

    通过这样的发现,不仅解决了神经网络在计算上的难度,同时也说明了深层神经网络在学习上的优异性。从此,神经网络重新成为了机器学习界中的主流强大学习技术。同时,具有多个隐藏层的神经网络被称为深度神经网络,基于深度神经网络的学习研究称之为深度学习。

     

    由于深度学习的重要性质,在各方面都取得极大的关注,按照时间轴排序,有以下四个标志性事件值得一说:

     

    2012年6月,《纽约时报》披露了Google Brain项目,这个项目是由Andrew Ng和Map-Reduce发明人Jeff Dean共同主导,用16000个CPU Core的并行计算平台训练一种称为“深层神经网络”的机器学习模型,在语音识别和图像识别等领域获得了巨大的成功。Andrew Ng就是文章开始所介绍的机器学习的大牛(图1中左者)。

     

    2012年11月,微软在中国天津的一次活动上公开演示了一个全自动的同声传译系统,讲演者用英文演讲,后台的计算机一气呵成自动完成语音识别、英中机器翻译,以及中文语音合成,效果非常流畅,其中支撑的关键技术是深度学习;

     

    2013年1月,在百度的年会上,创始人兼CEO李彦宏高调宣布要成立百度研究院,其中第一个重点方向就是深度学习,并为此而成立深度学习研究院(IDL)。

     

    2013年4月,《麻省理工学院技术评论》杂志将深度学习列为2013年十大突破性技术(Breakthrough Technology)之首。

    图17 深度学习的发展热潮

     

    文章开头所列的三位机器学习的大牛,不仅都是机器学习界的专家,更是深度学习研究领域的先驱。因此,使他们担任各个大型互联网公司技术掌舵者的原因不仅在于他们的技术实力,更在于他们研究的领域是前景无限的深度学习技术。

     

    目前业界许多的图像识别技术与语音识别技术的进步都源于深度学习的发展,除了本文开头所提的Cortana等语音助手,还包括一些图像识别应用,其中典型的代表就是下图的百度识图功能。

    图18 百度识图

     

    深度学习属于机器学习的子类。基于深度学习的发展极大的促进了机器学习的地位提高,更进一步地,推动了业界对机器学习父类人工智能梦想的再次重视。

     

    7.机器学习的父类--人工智能

     

    人工智能是机器学习的父类。深度学习则是机器学习的子类。如果把三者的关系用图来表明的话,则是下图:


    图19 深度学习、机器学习、人工智能三者关系

     

    毫无疑问,人工智能(AI)是人类所能想象的科技界最突破性的发明了,某种意义上来说,人工智能就像游戏最终幻想的名字一样,是人类对于科技界的最终梦想。从50年代提出人工智能的理念以后,科技界,产业界不断在探索,研究。这段时间各种小说、电影都在以各种方式展现对于人工智能的想象。人类可以发明类似于人类的机器,这是多么伟大的一种理念!但事实上,自从50年代以后,人工智能的发展就磕磕碰碰,未有见到足够震撼的科学技术的进步。

     

    总结起来,人工智能的发展经历了如下若干阶段,从早期的逻辑推理,到中期的专家系统,这些科研进步确实使我们离机器的智能有点接近了,但还有一大段距离。直到机器学习诞生以后,人工智能界感觉终于找对了方向。基于机器学习的图像识别和语音识别在某些垂直领域达到了跟人相媲美的程度。机器学习使人类第一次如此接近人工智能的梦想。

     

    事实上,如果我们把人工智能相关的技术以及其他业界的技术做一个类比,就可以发现机器学习在人工智能中的重要地位不是没有理由的。

     

    人类区别于其他物体,植物,动物的最主要区别,作者认为是“智慧”。而智慧的最佳体现是什么?

     

    是计算能力么,应该不是,心算速度快的人我们一般称之为天才。
    是反应能力么,也不是,反应快的人我们称之为灵敏。
    是记忆能力么,也不是,记忆好的人我们一般称之为过目不忘。
    是推理能力么,这样的人我也许会称他智力很高,类似“福尔摩斯”,但不会称他拥有智慧。
    是知识能力么,这样的人我们称之为博闻广,也不会称他拥有智慧。

     

    想想看我们一般形容谁有大智慧?圣人,诸如庄子,老子等。智慧是对生活的感悟,是对人生的积淀与思考,这与我们机器学习的思想何其相似?通过经验获取规律,指导人生与未来。没有经验就没有智慧。

     

    图20 机器学习与智慧

     

    那么,从计算机来看,以上的种种能力都有种种技术去应对。

     

    例如计算能力我们有分布式计算,反应能力我们有事件驱动架构,检索能力我们有搜索引擎,知识存储能力我们有数据仓库,逻辑推理能力我们有专家系统,但是,唯有对应智慧中最显著特征的归纳与感悟能力,只有机器学习与之对应。这也是机器学习能力最能表征智慧的根本原因。

     

    让我们再看一下机器人的制造,在我们具有了强大的计算,海量的存储,快速的检索,迅速的反应,优秀的逻辑推理后我们如果再配合上一个强大的智慧大脑,一个真正意义上的人工智能也许就会诞生,这也是为什么说在机器学习快速发展的现在,人工智能可能不再是梦想的原因。

     

    人工智能的发展可能不仅取决于机器学习,更取决于前面所介绍的深度学习,深度学习技术由于深度模拟了人类大脑的构成,在视觉识别与语音识别上显著性的突破了原有机器学习技术的界限,因此极有可能是真正实现人工智能梦想的关键技术。无论是谷歌大脑还是百度大脑,都是通过海量层次的深度学习网络所构成的。也许借助于深度学习技术,在不远的将来,一个具有人类智能的计算机真的有可能实现。

     

    最后再说一下题外话,由于人工智能借助于深度学习技术的快速发展,已经在某些地方引起了传统技术界达人的担忧。真实世界的“钢铁侠”,特斯拉CEO马斯克就是其中之一。最近马斯克在参加MIT讨论会时,就表达了对于人工智能的担忧。“人工智能的研究就类似于召唤恶魔,我们必须在某些地方加强注意。”

    图21 马斯克与人工智能

     

    尽管马斯克的担心有些危言耸听,但是马斯克的推理不无道理。“如果人工智能想要消除垃圾邮件的话,可能它最后的决定就是消灭人类。”马斯克认为预防此类现象的方法是引入政府的监管。在这里作者的观点与马斯克类似,在人工智能诞生之初就给其加上若干规则限制可能有效,也就是不应该使用单纯的机器学习,而应该是机器学习与规则引擎等系统的综合能够较好的解决这类问题。因为如果学习没有限制,极有可能进入某个误区,必须要加上某些引导。正如人类社会中,法律就是一个最好的规则,杀人者死就是对于人类在探索提高生产力时不可逾越的界限。

     

    在这里,必须提一下这里的规则与机器学习引出的规律的不同,规律不是一个严格意义的准则,其代表的更多是概率上的指导,而规则则是神圣不可侵犯,不可修改的。规律可以调整,但规则是不能改变的。有效的结合规律与规则的特点,可以引导出一个合理的,可控的学习型人工智能。

     

    8.机器学习的思考--计算机的潜意识

     

    最后,作者想谈一谈关于机器学习的一些思考。主要是作者在日常生活总结出来的一些感悟。

     

    回想一下我在节1里所说的故事,我把小Y过往跟我相约的经历做了一个罗列。但是这种罗列以往所有经历的方法只有少数人会这么做,大部分的人采用的是更直接的方法,即利用直觉。那么,直觉是什么?其实直觉也是你在潜意识状态下思考经验后得出的规律。就像你通过机器学习算法,得到了一个模型,那么你下次只要直接使用就行了。那么这个规律你是什么时候思考的?可能是在你无意识的情况下,例如睡觉,走路等情况。这种时候,大脑其实也在默默地做一些你察觉不到的工作。

     

    这种直觉与潜意识,我把它与另一种人类思考经验的方式做了区分。如果一个人勤于思考,例如他会每天做一个小结,譬如“吾日三省吾身”,或者他经常与同伴讨论最近工作的得失,那么他这种训练模型的方式是直接的,明意识的思考与归纳。这样的效果很好,记忆性强,并且更能得出有效反应现实的规律。但是大部分的人可能很少做这样的总结,那么他们得出生活中规律的方法使用的就是潜意识法。

     

    举一个作者本人关于潜意识的例子。作者本人以前没开过车,最近一段时间买了车后,天天开车上班。我每天都走固定的路线。有趣的是,在一开始的几天,我非常紧张的注意着前方的路况,而现在我已经在无意识中就把车开到了目标。这个过程中我的眼睛是注视着前方的,我的大脑是没有思考,但是我手握着的方向盘会自动的调整方向。也就是说。随着我开车次数的增多,我已经把我开车的动作交给了潜意识。这是非常有趣的一件事。在这段过程中,我的大脑将前方路况的图像记录了下来,同时大脑也记忆了我转动方向盘的动作。经过大脑自己的潜意识思考,最后生成的潜意识可以直接根据前方的图像调整我手的动作。假设我们将前方的录像交给计算机,然后让计算机记录与图像对应的驾驶员的动作。经过一段时间的学习,计算机生成的机器学习模型就可以进行自动驾驶了。这很神奇,不是么。其实包括Google、特斯拉在内的自动驾驶汽车技术的原理就是这样。

     

    除了自动驾驶汽车以外,潜意识的思想还可以扩展到人的交际。譬如说服别人,一个最佳的方法就是给他展示一些信息,然后让他自己去归纳得出我们想要的结论。就好比在阐述一个观点时,用一个事实,或者一个故事,比大段的道理要好很多。古往今来,但凡优秀的说客,无不采用的是这种方法。春秋战国时期,各国合纵连横,经常有各种说客去跟一国之君交流,直接告诉君主该做什么,无异于自寻死路,但是跟君主讲故事,通过这些故事让君主恍然大悟,就是一种正确的过程。这里面有许多杰出的代表,如墨子,苏秦等等。

     

    基本上所有的交流过程,使用故事说明的效果都要远胜于阐述道义之类的效果好很多。为什么用故事的方法比道理或者其他的方法好很多,这是因为在人成长的过程,经过自己的思考,已经形成了很多规律与潜意识。如果你告诉的规律与对方的不相符,很有可能出于保护,他们会本能的拒绝你的新规律,但是如果你跟他讲一个故事,传递一些信息,输送一些数据给他,他会思考并自我改变。他的思考过程实际上就是机器学习的过程,他把新的数据纳入到他的旧有的记忆与数据中,经过重新训练。如果你给出的数据的信息量非常大,大到调整了他的模型,那么他就会按照你希望的规律去做事。有的时候,他会本能的拒绝执行这个思考过程,但是数据一旦输入,无论他希望与否,他的大脑都会在潜意识状态下思考,并且可能改变他的看法。

     

    如果计算机也拥有潜意识(正如本博客的名称一样),那么会怎么样?譬如让计算机在工作的过程中,逐渐产生了自身的潜意识,于是甚至可以在你不需要告诉它做什么时它就会完成那件事。这是个非常有意思的设想,这里留给各位读者去发散思考吧。

     

    9.总结

     

    本文首先介绍了互联网界与机器学习大牛结合的趋势,以及使用机器学习的相关应用,接着以一个“等人故事”展开对机器学习的介绍。介绍中首先是机器学习的概念与定义,然后是机器学习的相关学科,机器学习中包含的各类学习算法,接着介绍机器学习与大数据的关系,机器学习的新子类深度学习,最后探讨了一下机器学习与人工智能发展的联系以及机器学习与潜意识的关联。经过本文的介绍,相信大家对机器学习技术有一定的了解,例如机器学习是什么,它的内核思想是什么(即统计和归纳),通过了解机器学习与人类思考的近似联系可以知晓机器学习为什么具有智慧能力的原因等等。其次,本文漫谈了机器学习与外延学科的关系,机器学习与大数据相互促进相得益彰的联系,机器学习界最新的深度学习的迅猛发展,以及对于人类基于机器学习开发智能机器人的一种展望与思考,最后作者简单谈了一点关于让计算机拥有潜意识的设想。

     

    机器学习是目前业界最为Amazing与火热的一项技术,从网上的每一次淘宝的购买东西,到自动驾驶汽车技术,以及网络攻击抵御系统等等,都有机器学习的因子在内,同时机器学习也是最有可能使人类完成AI dream的一项技术,各种人工智能目前的应用,如微软小冰聊天机器人,到计算机视觉技术的进步,都有机器学习努力的成分。作为一名当代的计算机领域的开发或管理人员,以及身处这个世界,使用者IT技术带来便利的人们,最好都应该了解一些机器学习的相关知识与概念,因为这可以帮你更好的理解为你带来莫大便利技术的背后原理,以及让你更好的理解当代科技的进程。

     

    10.后记

    这篇文档花了作者两个月的时间,终于在2014年的最后一天的前一天基本完成。通过这篇文章,作者希望对机器学习在国内的普及做一点贡献,同时也是作者本人自己对于所学机器学习知识的一个融汇贯通,整体归纳的提高过程。作者把这么多的知识经过自己的大脑思考,训练出了一个模型,形成了这篇文档,可以说这也是一种机器学习的过程吧(笑)。

     

    作者所在的行业会接触到大量的数据,因此对于数据的处理和分析是平常非常重要的工作,机器学习课程的思想和理念对于作者日常的工作指引作用极大,几乎导致了作者对于数据价值的重新认识。想想半年前,作者还对机器学习似懂非懂,如今也可以算是一个机器学习的Expert了(笑)。但作者始终认为,机器学习的真正应用不是通过概念或者思想的方式,而是通过实践。只有当把机器学习技术真正应用时,才可算是对机器学习的理解进入了一个层次。正所谓再“阳春白雪”的技术,也必须落到“下里巴人”的场景下运用。目前有一种风气,国内外研究机器学习的某些学者,有一种高贵的逼格,认为自己的研究是普通人无法理解的,但是这样的理念是根本错误的,没有在真正实际的地方发挥作用,凭什么证明你的研究有所价值呢?作者认为必须将高大上的技术用在改变普通人的生活上,才能发挥其根本的价值。一些简单的场景,恰恰是实践机器学习技术的最好地方。

     

    最后,作者很感谢能够阅读到这里的读者。如果看完觉得好的话,还请轻轻点一下赞或者分享给更多的人,你们的鼓励就是作者继续行文的动力。

     

    参考文献:

      1.Andrew Ng Courera Machine Learning

      2.LeNet Homepage

      3.pluskid svm

     

    厚积薄发,行胜于言@飞鸟各投林

    展开全文
  • 从ERP免费开始的讨论,有人认为软件免费收取咨询费是条活路,其实不然,帖子内有更多的深入讨论,最后进入案例讨论中的跑题环节,讨论讨论就出现了跑题,大家的发散性思维很强烈。 1、ERP为什么免费——免费是为了...

    下面是昨天CSDN某群内的讨论.从ERP免费开始的讨论,有人认为软件免费收取咨询费是条活路,其实不然,帖子内有更多的深入讨论,最后进入案例讨论中的跑题环节,讨论讨论就出现了跑题,大家的发散性思维很强烈。

     

    1、ERP为什么免费——免费是为了收费,那么如何收?收什么

    2009-12-21 13:12:52 bjblues|邢波涛
    新画皮故事——ERP软件为什么要免费
     http://www.fuwushe.org/jsp/news/article.jsp?page=news&id=why-erp-free
    2009-12-21 14:49:30 吕建伟
    ERP 为啥要免费?

    2009-12-21 14:49:53 海南-勃起王
    免费是为了更好的收服务费

    2009-12-21 14:50:13 海南-勃起王
    失败了,也可以说我们这是免费的,找点理由

    2009-12-21 14:50:56 吕建伟
    免费是为了更好的收服务费 ?
    收什么样的服务费?
    我不明白

    2009-12-21 14:51:18 海南-勃起王
    软件免费,服务不免费呗

    2009-12-21 14:51:26 吕建伟
    啥服务?

    2009-12-21 14:51:37 海南-勃起王
    咨询+实施

    2009-12-21 14:52:23 董昊[edisundong]
    说到底是不可能免费的

    2009-12-21 14:52:27 青润
    人家说,软件留下,人走吧。我们自己找人实施,找别人咨询。

    2009-12-21 14:52:55 海南-勃起王
    软件是自个做的,别人实施不了

    2009-12-21 14:52:56 吕建伟
    咨询?国内大部分实施信息化的企业,都没有专门请过咨询公司

    2009-12-21 14:53:32 董昊[edisundong]
    标准版可以免费,但是根据个性化就收费

    2009-12-21 14:53:59 董昊[edisundong]
    像demino一样

    2009-12-21 14:54:02 青润
    呵呵,别做梦了。人家不可能这样给你的。现在要的就是免费,不要想着咨询就能收到钱。

    2009-12-21 14:54:12 吕建伟
    哦。收的是个性化开发、实施、服务支持费用?

    2009-12-21 14:54:27 海南-勃起王
    忽悠呗,反正听说软件不要钱就很开心
    然后把咨询报成开发费的价格

    2009-12-21 14:54:48 青润
    个性化服务还有些靠谱,别的,呵呵,用户不是傻瓜,也很聪明的。

    2009-12-21 14:55:09 青润
    人家也会核算,最后要用掉多少钱,那些合理那些不合理。

    2009-12-21 14:56:22 吕建伟
    我从来没听过软件公司还收过咨询费的

    2009-12-21 14:56:27 海南-勃起王
    和朝三暮四其实差不多
    咨询听起来更高端点,所以开发费免了

    2、软件公司收取咨询费,客户把软件购买预算变成购买咨询?可能么?

    2009-12-21 14:56:46 吕建伟
    谁所在的软件公司收过咨询费?大家说说

    2009-12-21 14:57:33 青润
    都是做梦娶媳妇,忽悠别人,其实最后害死的还是自己。

    2009-12-21 14:57:41 王绍全[wwwsq]
    一听到咨询费,甲方首先觉得弹性很大,然后担心有没有猫腻。

    2009-12-21 14:57:50 海南-勃起王
    [表情]

    2009-12-21 14:58:39 吕建伟
    青润说的很对。
    所以我一听服务费,我老觉得不靠谱

    2009-12-21 14:58:53 网络咖啡(mailbomb
    社会太浮躁了

    2009-12-21 14:58:55 吕建伟
    现在什么都说服务,但没有人能说清服务。就连软件技术也是服务

    2009-12-21 14:59:05 吕建伟
    自己忽悠自己

    2009-12-21 14:59:15 吕建伟
    企业客户在一边看笑话。玩,继续玩

    2009-12-21 14:59:17 青润
    这种做法完全是把客户当傻瓜的方式来应付客户,最后是客户把你当傻瓜玩了一把,大家都浪费了时间,什么都没得到。

    2009-12-21 15:00:20 王绍全[wwwsq]
    这是观念的问题。企业普遍还没有聘用咨询公司的经验,预算里面就没这一块。

    2009-12-21 15:01:10 青润
    另外,用户的费用是有计划的。要么是软件购置费用,要么是硬件采购费用,结果,你软件给人家免费,要收取咨询费,人家的账目

    都没地方出。还和你谈什么。

    2009-12-21 15:01:41 青润
    如果你真的是ibm等大公司,卖的就是咨询,那自然另说,用户方采购的时候,也会定义出名目来的。

    2009-12-21 15:02:04 青润
    程序员,还是老老实实当程序员,不要学别人玩什么心眼。

    2009-12-21 15:02:23 青润
    最后把本分丢了,项目也没拿到,人也丢了。

    2009-12-21 15:02:28 王绍全[wwwsq]
    也不是不能做,关键是要确认有这样的客户,他们有咨询预算。

    2009-12-21 15:06:12 董昊[edisundong]
    在国内咨询才应该是免费的

    2009-12-21 15:06:31 青润
    这样的行为算是什么,应该算是看到有些人的走后门赚钱的门路,然后就想着,我是不是也能这样赚钱呢?
    却不知道人家这样做的

    时候,已经得到客户的认可,或者和客户方谈好了回扣的方式,软件销售变咨询费用,在税收上,就会增加一大块,软件销售的税收

    ,比咨询要低一些,而且软件销售有很多免税政策,咨询是没有的。

    2009-12-21 15:08:00 青润
    就以为别人是这么操作的,你也能这么操作,最后是什么都丢失了。
    本来老老实实做人的本分和事情都丢了,客户怎么看待你?


    户不会拿你做一个老实人来看待了。
    那对待你的方式和手段就完全不一样了。
    呵呵。这个以前有一个深入的议题,好像软工板块很

    多年前讨论过一次。

    3、流程复杂一些合适么?该如何体验软件?

    2009-12-21 15:08:14 董昊[edisundong]
    我个人是这样认为的,如果客户已经有意向那就收软件的费用,如果客户毫无意向,免费让其下载,不实施不咨询。

    2009-12-21 15:09:05 董昊[edisundong]
    而公司必须有自己流程体验大厅

    2009-12-21 15:10:12 海南-勃起王
    这是免费的代价,你尽可以把流程搞复杂一些,用户用不了,不找你找谁呢
    又想免费又想要服务,用户不会蠢到认为开发商完全

    free

    2009-12-21 15:10:40 吕建伟
    你尽可以把流程搞复杂一些,用户用不了,所以不用了,而不是找你

    2009-12-21 15:10:48 青润
    用户用不了,就不会买了。呵呵直接会认为你的产品就不行。

    2009-12-21 15:10:57 青润
    呵呵。

    2009-12-21 15:11:15 青润
    而且,把流程搞复杂所付出的代价,那可不是一般的大。

    2009-12-21 15:12:42 董昊[edisundong]
    。。。流程不能复杂,要有客户体验中心

    2009-12-21 15:13:04 被我屏蔽的一个人:Slin000
    免费让他用,但声明不是免费的
    等他用上了,再收费也不迟

    2009-12-21 15:13:48 董昊[edisundong]
    [表情]那谁还会用啊

    2009-12-21 15:14:05 董昊[edisundong]
    有意向的客户是坚决不能试用的

    2009-12-21 15:14:26 被我屏蔽的一个人:Slin000
    要是免费都没人用,那还怎么收钱。。。

    2009-12-21 15:14:44 董昊[edisundong]
    你不实施软件肯定不好用,到时候人家的评价就是不好用,试用失败

    2009-12-21 15:16:24 被我屏蔽的一个人:Slin000
    ERP这样的东西,不实施就用不起来,你肯定得给人家免费工作一段时间

    2009-12-21 15:16:51 董昊[edisundong]
    [表情]免费工作。。。

    2009-12-21 15:17:01 被我屏蔽的一个人:Slin000
    人家肯让你干活了,你就有生意了

    2009-12-21 15:17:28 打雷啦[xuweiqun]
    一般应该是谈好价格,然后先试用,试用通过,才付钱

    4、老老实实做人,踏踏实实做事,别玩什么猫腻,优质客户很重要

    2009-12-21 15:17:38 青润
    该收费的就要收费,大家不是喝西北风长大的。
    你明确告诉客户需要花钱,人家对你的看法会和那些油腔滑调想着方式从别的地方

    收钱的感觉要好得多。
    比如说,去买苹果,结果那老板一直给我介绍苹果的产地,用了什么农药,土壤多好多好,你会买么?
    另外

    一个,直接给你切开,让你尝尝,然后告诉你价钱,你会买哪个?

    2009-12-21 15:18:30 被我屏蔽的一个人:Slin000
    就是,人家都不让你试用,那怎么成生意?
    2009-12-21 15:18:51 董昊[edisundong]
    只要不付一半以上的合同款的客户,我都不愿意签

    2009-12-21 15:19:30 打雷啦[xuweiqun]
    我晕,现在多是买方市场

    2009-12-21 15:19:48 打雷啦[xuweiqun]
    你这么强势

    2009-12-21 15:20:06 董昊[edisundong]
    我宁可只要一个优质客户也不要10个不忠诚的客户

    2009-12-21 15:20:33 青润
    如果你有一定的市场份额,那么这么做没问题。完全可以。

    2009-12-21 15:20:36 董昊[edisundong]
    我说的实话,乱七八糟的客户,宁可没有

    2009-12-21 15:20:43 青润
    如果是全新开拓市场,那就肯定麻烦。

    2009-12-21 15:20:43 被我屏蔽的一个人:Slin000
    有钱就得了

    2009-12-21 15:20:43 打雷啦[xuweiqun]
    人家为了生存,没办法的

    2009-12-21 15:21:10 被我屏蔽的一个人:Slin000
    头一回听说客户还要忠诚的

    5、广告插播

    2009-12-21 15:21:20 岳笑南-走路狂(360720125)
    博客的匿名评论功能一会上线

    6、继续4的内容,挑选优质客户才是重要的

    2009-12-21 15:21:32 被我屏蔽的一个人:Slin000
    你可以对我不忠,只要你按时付款
    2009-12-21 15:21:42 董昊[edisundong]
    就是为了生存,才不得不控制成本,客户品质不好,做一家亏一家

    2009-12-21 15:22:04 青润
    挑选优质客户是一个很好的商业操作行为,没有错误。

    2009-12-21 15:22:42 青润
    能活下去的,大部分都有自己的优质客户资源,不管是关系下的,还是产品形成的。

    2009-12-21 15:23:26 董昊[edisundong]
    是的,一个企业不在乎你有多少客户,而是有多少优质客户

    2009-12-21 15:24:10 董昊[edisundong]
    全国每一个人付钱,qq,盛大就关门了,付钱的就是优质客户

    2009-12-21 15:24:21 董昊[edisundong]


    2009-12-21 15:25:16 被我屏蔽的一个人:Slin000
    忠不忠的,不存在

    7、案例讨论中跑题

    2009-12-21 15:25:37 青润
    06年澳大利亚的那个程序员的经历还记得么?delphi一个著名控件的开发者,本来年薪十五万,他的控件好像排名在前五位的,出来

    自己做,一年收入不到5万,06年,把自己的代码全部公开,然后发信给所有的用户,大骂他们是蛀虫,没有人付费。

    2009-12-21 15:27:06 被我屏蔽的一个人:Slin000
    它的营销方式有问题

    2009-12-21 15:27:21 被我屏蔽的一个人:Slin000
    没有人会主动付费的

    2009-12-21 15:27:36 青润
    这个另外评定,刚才说的是客户的质量问题。

    2009-12-21 15:28:03 青润
    跑题,不是好习惯,呵呵

    2009-12-21 15:28:10 打雷啦[xuweiqun]
    控件里插广告[表情]

    2009-12-21 15:28:17 打雷啦[xuweiqun]
    看他们付不付

    2009-12-21 15:28:58 董昊[edisundong]
    自己出去本来这种行为违法的

    2009-12-21 15:29:27 青润
    又一个习惯跑题的

    2009-12-21 15:29:37 被我屏蔽的一个人:Slin000
    不一定吧,各国法律都不同

    2009-12-21 15:29:40 青润
    也不讨论违法问题,人家的控件完全是自己业余时间做的。

    2009-12-21 15:29:47 青润
    你可以去查看那个新闻。

    2009-12-21 15:30:36 被我屏蔽的一个人:Slin000
    其实没什么好讨论的,谁都知道好客户有多重要,讨论这样的问题没有意义

    2009-12-21 15:30:37 青润
    呵呵,中国人讨论问题的习惯性跑题,很严重么。呵呵[表情]

    2009-12-21 15:31:18 被我屏蔽的一个人:Slin000
    问题是,他是你的客户么?你能让他成为你的客户么?

    2009-12-21 15:32:21 被我屏蔽的一个人:Slin000
    哪国人都跑题,别搞种族主义

    2009-12-21 15:33:01 青润
    这里就是中国,我看到的就是中国人的跑题现象很严重,我没有对比说外国人是否不跑题的问题,所以,你的提议是无效的。

    2009-12-21 15:33:35 被我屏蔽的一个人:Slin000
    这里还是地球呢,你怎么不说地球人老跑呢?

    2009-12-21 15:34:03 打雷啦[xuweiqun]
    那就发散思维

    2009-12-21 15:34:05 被我屏蔽的一个人:Slin000
    这里也是CSDN专家群,你为什么不说CSDN上写博客的老跑呢?

    8、我习惯就事论事,但有人习惯问题扩大化

    2009-12-21 15:34:09 青润
    尽量具体化目标范围,这是我做事情的习惯。因为眼前的都是中国人,我没必要夸大处理。

    2009-12-21 15:34:50 辛凯[Tony.sing]<nilxin@21cn.com>
    难的青润都出现了

    2009-12-21 15:34:50 青润
    我不知道是不是都写blog,因为我看过的也不多,所以,我的定义不在这里,而且今天讨论的问题点是这样的。

    2009-12-21 15:35:05 青润
    难道,我应该消失么?

    2009-12-21 15:35:06 被我屏蔽的一个人:Slin000
    拿地域,国别,性别,等这样的事情说事,没意思

    2009-12-21 15:35:43 青润
    不是有意思没意思,而是事实,我今天看到的事实就是这样的,你也不用激愤如何如何。呵呵。

    ……后面的省略

    展开全文
  • 时滞对退化微分方程稳定性的强烈影响,蒋威,,本文讨论时滞对退化微分方程的稳定性强烈影响。首先,我们给出两个例子来表明时滞对退化微分方程影响的强烈。然后给出一些时滞对
  • 关于考研的若干讨论

    千次阅读 2014-04-12 10:11:47
    在《写给考研学生:凭什么让好大学要你》中,博友们留言集中讨论了不少关于上研究生的话题,专门摘出来分享。有两篇 《想考研的成考毕业生》、 《与大二学生讨论专业学习》单独成文,还有两篇《给通信专业研究生...

    在《写给考研学生:凭什么让好大学要你》中,博友们留言集中讨论了不少关于上研究生的话题,专门摘出来分享。有两篇 《想考研的成考毕业生》、 《与大二学生讨论专业学习》单独成文,还有两篇《给通信专业研究生——安心完成培养,你不是在劣势下和计算机学生抢饭碗来的》、《 研究生应该优先完成培养环节的学习任务》也讨论的是如何上研究生的问题。


    【讨论1】(brett1753)

      贺老师您好,我是杭电电子信息工程专业大三的学生,在学校实验室学了两年,有点技术基础。现在大三下学期准备考研,看了您的文章,感觉研究生也不咋样的。个人实力还是第一位。我现在比较担心的一点是,等我研究生毕业已经27岁了。爱因斯坦在63岁时说过“一个人没有在30岁以前达成科学上的最大成就,那他永远都不会有。”所以我该怎么做呢。ps想说的很多,思路有些混乱。。。

    【回复】

      千万不要因这篇文章认为我强烈反对大学生考研。上研究生,意味着更高的追求,我呼吁的是不要只盯着考试,而是要做到全面发展。20楼丁又专老师提得好,大学没有好好学的,我也不建议再造空中楼阁。本科生、研究生到底能咋样,不在于录取通知书,不在于毕业证,在于你是如何度过这段求学时光的。在研究生这个群体中,有很多的佼佼者,当然也有混文凭的,这种景象和本科生群体差不多。以你述的经历,你不属于我劝戒的情形。27岁?这是我们所处时代正常的年龄,科技的发展,已经将我们整体的在学校生活时间拉长了。爱教授所言极是,是说给天才。将自己看成凡人,自己的最大成就,未必是影响全人类的成就,始终追求自己的最好即是,这样不是更有效,能让自己更快活吗?年过40的我看到这句话,尽管自己毫无成就,但就因为这篇文章能引发大家的思考,却不由得产生了一种成就感。


    【讨论2】(丁又专老师)

      看来考研的同学真多。很赞成贺老师的话“每一个考研的同学都要思考:导师凭哪一点来录取自己?”考研笔试分数重要,但实践能力更重要。

      笔试与实践并不是二选一,我们在大三花较多的时间在实践上,本身就可以促进理论的学习。目前有部分考研的学生,每天都在背诵专业课程(IT),但编程很少,如果我是导师,绝对不录取,即使笔试考第一。
      而如果我们打好了基本功,导致笔试没过,其实也未尝不是好事,说句实在话,大家不要把研究生想得这么神圣,感觉只要读研了就能够学到很多东西。如果本科四年都没有学到一些东西,提高自身学习能力;那么,还是劝你不要考研了,去工作吧,因为老板会让我们明白:我们不懂的地方太多了,主动学习太重要了。
      上面说的有些偏激,但作为一个过来人,应该说上述讲的内容都是真实的。除非你对某一个方向非常感兴趣,那么去考研吧;如果只是觉得大学四年没有打好基础,发现没有学到什么内容,不好找工作,千万不要考研,因为如果幸运考上了,你会失去更多,3年之后,你会说“3年时间,浪费了。”
      把考研准备的一年时间(从现在开始2014.4,到2015.6),好好用来提高自身的实践动手能力吧,然后去工作吧。社会不缺研究生,甚至不缺博士,但缺“能安心,能吃苦,能创业”的三能人才。

    【回复】

      学生很少想到考上以后再如何,也有很多人认为研究生阶段也是老师教、学生学。需要提醒的是,研究生阶段参与导师的课题,在课题研究中,既做了贡献,又获得学业的提高。所以,导师一定是要能“干活”的学生,而不只是会考试的学生。其实,这也是作为学生的期望。


    【讨论3】(lidec)

      贺老师,我是一名二本大学电气自动化专业的学生,大二开始自学的单片机,目前大四即将毕业,一直在自学电子和软件方面的东西,现在已经在北京一家公司找到一份嵌入式软件工程师的工作,目前正在学习linux编程方面的知识。 我是那种每逢大考必完蛋的人,也没有选择考研,和家里为此还闹了别扭,毕竟周围的孩子基本上都考研了,而且目前工作的地方同事也多是研究生,感觉压力挺大的。平时成绩还可以,周围很多人都劝我赶紧去考。我现在的想法是继续坚持自学,坚持看书,保持这种状态先工作一段时间,再考虑其他的。 

      还想请老师指导一下,由于是电气自动化专业的学生,而且一直在自学,感觉自己一直没有做过什么稍微大一些的软件项目。应聘的职位是做嵌入式linux的,目前正在学习一些基本的linux编程知识,感觉自己应当做一个小但是完整的项目,但是无从下手,希望老师指点一下。

    【回复】

      我提倡要考研,需要给出一个自己的理由,而不是家里要求、周围孩子基本都之类的外在理由。目前我国在校在人员结构上已经呈现出不合理的态势,跟风害死人,造成了教育质量的整体下滑,作为学生,学习动力弱,也得不到该有的提高。当自己真的愿意按照研究生的培养模式,立足于首先要提高研究和高级实践能力的目的去求学,你才能够不枉费几年的时光,获得该有的进步。工作后的机会,想抓的话很多,学历只是可以一时示人的东西,长久发展还看你自己的实力。想清楚了,如果要考,我赞成你立刻着手准备,读书状态一直延续下来,我感觉更顺一些了。像我这样年纪的人,工作几年,上几年学的模式,现在越来越不好走了。
      我不知道你是否已经应聘成功。如果是的话,可以结合工作岗位的要求,看公司主营的产品,从解决最表层、最简单的问题开始入手试做,勤问一些,同事们会给你帮助。在 我的专栏中的“职场新人”部分,有好几封回信说的就是职场新人的学习问题,可以去看看。而如果只是在这个方向准备时,找一些案例教程,甚至是视频教程,会有不少指导材料的。不必一定先来个什么原创,从模仿,甚至就是跟着做、读代码开始,沉下心来,你能做出来。确实,经历一个完整小项目的开发,在求职时可以将之当作“敲门砖”,很有意义。


    【讨论4】(geekxm)

      老师,比较认同您对考试的看法——不是为了那个证,而且你在考证的过程中学到了什么。我是一名毕业不久的专科生,一直在努力追求技术,坚信不会比高学历的人差,但是我也希望能够在追求技术的同时能够提高学历,好像是有一些途径的,可是听说需要花不少精力来处理繁琐的手续,若是这样,我觉得有些得不偿失了。但是学历代表了社会对你的认可,低学历确实少了很多机会。望老师指点!

    【回复】

      说文凭越来越贬值,于是很多人为了文凭不择手段,大学生追求“过了就行”,考研的只顾着“考上就行”。作为教师,我无力阻挡这一潮流,心里在期望着文凭贬值到一文不值之时,教育就有希望了。那时,大家才能将上学与自身的真正提高建立起联系。而你既然已经工作,我觉得除非你想进ZF、学校之类的用人体制尚不灵活的单位,学历问题不要看那么重了。职场中可以让社会认可你的方面太多了,学历如果与自己的追求统一不起来,只是作个标签,没有意思。IT行业的市场化程度很高,还是能用自己的能力说话的。要再进学历教育的框框,从提高的能力角度,还是要回到打基础、会思维上来,要以阅读、写作等为主要方式。学历教育这样做是对的,而大家可能更感兴趣的是更为直接的工作能力。

    【回音】

      谢老师,我想我现在不需要刻意的追求学历了,除非真的是有我想要的。我会把更多精力放在钻研技术上,我相信真正做到极致,一定会被人看到和认可的!



    【讨论5】(wuxian_fazhan)
      老师我一直很纠结,总是感觉计算机专业技术能力比学历重要。计算机专业的考研合适吗?

    【回复】

      从根本上讲,能力永远比学历重要。有一个思维必须要纠正,能力和学历可以等同起来,这取决于你是如何去取得学历的。按学历规定的能力要求去学,而不是所谓的过了就行,该经过的环节蒙混过关,之类偷机取巧,只能是将自己卖进去。是否适合考研,和个人相关,与专业无关。




    ==================== 迂者 贺利坚 CSDN博客专栏=================
    |== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
    |== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
    |== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
    ===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====



    展开全文
  • :Java 四大名著之一,本书一共包含90个条目,每个条目讨论Java程序设计中的一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些有益的做法。 《OnJava8 》:又名《Java编程思想》第5版, Java 四大...
  • 后端技术讨论

    千次阅读 2016-11-27 13:14:02
    这里有一篇关于后端技术需要学什么东西的讨论。有机会大家去看看吧 https://www.zhihu.com/question/26350691
  • 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题,同时也讨论一些约定及编码标准。这份规范主要侧重于我们所普遍遵循 这是Google官方的Java编程风格规范。与其它的编程风格指南一样,这里所...
  • 强烈推荐:程序员接私活那点事

    万次阅读 多人点赞 2015-11-23 14:58:32
    如果接了,你得找人吧,协调大家开发吧,讨论需求和沟通吧!你就等着睡不着觉吧。 2、私活价格和收钱是难题 先说价格,个人接私活,让你报价,看需求报价吧, 这真不是没吃过猪肉,还没见过猪跑就能解决...
  • 数学之美系列好文,强烈推荐

    万次阅读 2017-04-22 16:52:29
    数学之美系列一 -- 统计语言模型 2006年4月3日 上午 08:15:00 发表者: 吴军, Google 研究员   ...也 许大家不相信,数学是解决信息检索和自然语言处理的最好工具。它能非常清晰地描述这些领域的实际问
  • TopLanguage讨论精选之:“今天我们思考”主题系列讨论TopLanguage(http://groups.google.com/group/pongba) TopLanguage上的关于解题思维的主题讨论已经进行了一段时间了,有了许多的收获,不管是题目方面的还是...
  • 比特币量化套利的心路历程...#财务知识# 程序员如何优雅的挣零花钱 2.0 强烈推荐里面… #生活黑客# 我们每个人或许都想过改变世界,尤其是技术人员… 性价比最高的副业和渠道… #学习资源分享# 数据可视化的基础知识.
  • 最新最全的 SQL 入门教程,老少皆宜,强烈推荐!

    千次阅读 多人点赞 2019-09-03 23:15:43
    然后讨论如何使用 SELECT 语句查询数据,过滤数据,对结果进行排序,实现排行榜与分页效果;同时还会介绍常见的 SQL 函数,CASE 表达式以及数据的分组汇总;最后是一个分析世界银行全球 GDP 数据的实战案例。 第二...
  • C#技术讨论群请你加入

    千次阅读 2006-12-22 22:13:00
    讨论C#群,强烈等你加入群号:28161830
  • [企业管理]员工生育保障问题的讨论

    千次阅读 2016-06-10 13:41:15
    以下内容来自水木的一个讨论帖子:http://www.newsmth.net/nForum/#!article/Pregnancy/1082840下面是我当时的回答:其实,就是利益问题,管理者不认为这是需要自己承担的费用,而对于员工来说,很有可能只是为了...
  • Kotlin的面向对象编程,深入讨论继承写法的问题

    万次阅读 多人点赞 2019-05-20 08:55:57
    不过当时的弹幕里大家对这个问题的呼声很强烈,很多人都要求我不要跳过,那么最后跟大家商讨下来就是我答应会在之后专门写一篇文章来讲解这个问题。 不过这篇文章并没有很快到来,之后我就开始忙趣享GIF上线的事情...
  • 好好了解一下Cookie(强烈推荐)

    万次阅读 多人点赞 2017-08-28 01:57:34
    Cookie是由服务器端生成,发送给User-Agent,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器,对cookie知识感兴趣的朋友一起学习吧 ...
  • 数据库原理分析(强烈推荐)

    万次阅读 多人点赞 2017-04-01 10:29:50
    一提到关系型数据库,我禁不住想:有些东西被忽视了。关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作的。你可以自己谷歌/百度一下『关系型数据库...
  • socket编程简介(强烈推荐)

    千次阅读 多人点赞 2018-07-16 11:17:24
    常用的协议有,IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议(这个协议我将会单独开篇讨论!)。  注意:并不是上面的type和...
  • 驱动开发——驱网核心技术丛书 免费试读下载及勘误讨论 驱网核心技术丛书包括:《天书夜读》、《寒江独钓》和《竹林溪径》三本,也可以称为“驱网核心三部曲”,其中,《天书夜读》一书上市以来,受到广发网友的...
  • iOS 学习资料整理{非常有用,强烈推荐}  DXSmile 关注 2016.02.15 01:50* 字数 612 阅读 17749评论 13喜欢 145 iOS 学习资料整理 这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合...
  • Oracle时间格式讨论

    千次阅读 2005-11-24 15:11:00
    Oracle时间格式讨论 在网上看见不少oracle新学者对oracle的时间格式很烦,经常是设计了一个带时间字段的表之后,向表插入数据失败。回想起自己刚开始学习oracle时,也对这个时间格式摸不着头脑,虽然是小小的问题,...
  • 无领导小组讨论案例及其分析2

    千次阅读 2015-11-30 11:31:23
    无领导小组讨论案例及其分析2
  • Linux内核必读五本书籍(强烈推荐)

    万次阅读 多人点赞 2019-08-08 11:44:20
    本书针对具体的Intel平台,讨论了其重要特征,逐行剖析了相关的代码片段。但是,本书涵盖的内容不仅仅局限于代码的机理,还解释了Linux运作方式的理论支撑。 本书第三版涵盖Linux2.6,从中可以看到几乎内核每个子...
  • 《网络渗透技术》 强烈推荐

    千次阅读 2005-11-08 13:17:00
    《网络渗透技术》 强烈推荐 信息来源:http://www.xfocus.net/projects/book/9.html《网络渗透技术》配套资料 http://www.xfocus.net/projects/book/npt/《网络渗透技术》配套资料打包 ...htt
  • 这里接前文,不过,在这里讨论的问题出现了分支,一个是原有问题的深入,另一个是处理手段出现问题时候可能发生的激烈冲突,详细内容看下文的应答过程,应该能感受到。13发信人: chaobill (若我离去,后会无期), 信区...
  • 组织项目讨论会的经验总结(一)

    千次阅读 2012-07-16 17:22:05
    为了更有效的进行团队沟通,不定期的召开讨论会成了第一选择,但是如何组织讨论会才会更有效率呢?这可能是项目管理中经常遇到的问题,也是我一直在思考的问题。在实践中,通过与团队进行多次讨论会后,我认为可以从...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,972
精华内容 33,188
关键字:

强烈的讨论