美文网首页人工智能通识程序员人工智能时代(AI)
人工智能通识-数学-零基础矩阵运算

人工智能通识-数学-零基础矩阵运算

作者: zhyuzh3d | 来源:发表于2019-02-01 14:27 被阅读77次

    欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


    单个数字

    韩梅梅开了个淘宝手机店,只卖华为mate20,全年卖了1000台,可以用表格表示:

    店主 mate20销量
    韩梅梅 1000

    或者计作:
    \begin{bmatrix} mate20销量_{韩梅梅} \end{bmatrix}= \begin{bmatrix} 1000 \end{bmatrix}

    一维数列

    小明也开了个淘宝手机店,有iphone7、iphone8和iphoneX三个商品,各种手机的年销量可以表示成下表:

    店主 iphone7销量 iphone8销量 iphoneX销量
    小明 10 20 30

    或者计作:
    \begin{bmatrix} iphone7销量_{小明},&iphone8销量_{小明},&iphoneX销量_{小明} \end{bmatrix}= \begin{bmatrix} 10,&20,&30 \end{bmatrix}

    二维数列

    我们都知道小明还有两个哥哥,他们也都开了淘宝手机店,由于兄弟几个进货渠道一样,所以也都是只卖这三种手机:

    店主 iphone7销量 iphone8销量 iphoneX销量
    大毛 30 30 20
    二毛 20 20 30
    小明 10 20 30

    或者计作:

    \begin{bmatrix} iphone7销量_{大毛},&iphone8销量_{大毛},&iphoneX销量_{大毛}\\ iphone7销量_{二毛},&iphone8销量_{二毛},&iphoneX销量_{二毛}\\ iphone7销量_{小明},&iphone8销量_{小明},&iphoneX销量_{小明}\\ \end{bmatrix} = \begin{bmatrix} 30,&30,&20\\ 20,&20,&30\\ 10,&20,&30\\ \end{bmatrix}

    这种数字横向竖向都有排列的就叫做矩阵

    矩阵加法

    后来三兄弟发觉搞错了,上面只统计了前10个月的销量,漏了两个月没统计,而这两个月的销量表如下:

    店主 iphone7销量' iphone8销量' iphoneX销量'
    大毛 10 10 10
    二毛 0 10 10
    小明 10 0 0

    即:

    \begin{bmatrix} iphone7销量’_{大毛},&iphone8销量’_{大毛},&iphoneX销量'_{大毛}\\ iphone7销量'_{二毛},&iphone8销量'_{二毛},&iphoneX销量'_{二毛}\\ iphone7销量'_{小明},&iphone8销量'_{小明},&iphoneX销量'_{小明}\\ \end{bmatrix} = \begin{bmatrix} 10,&10,&10\\ 0,&10,&10\\ 10,&0,&0\\ \end{bmatrix}

    我们需要把两个表格数据叠加,就是两个矩阵相加,那么当然是每个数字销量对应叠加:

    \begin{bmatrix} 30,&30,&20\\ 20,&20,&30\\ 10,&20,&30\\ \end{bmatrix}+ \begin{bmatrix} 10,&10,&10\\ 0,&10,&10\\ 10,&0,&0\\ \end{bmatrix}= \begin{bmatrix} 40,&40,&30\\ 20,&30,&40\\ 20,&20,&30\\ \end{bmatrix}

    最终正确销量表格就是:

    店主 iphone7销量 iphone8销量 iphoneX销量
    大毛 50 50 30
    二毛 20 30 40
    小明 20 20 30

    从这个例子看出,矩阵加法针对矩阵中每个数字的操作,两个做加法的矩阵应该行列数量一致(都是3行3列),如果缺少的话应该用0或者空位补齐之后再相加。

    思考题:假设小明的爸爸和妈妈也分别开了各自的淘宝手机店,当然也只售卖这三个iphone商品(因为进货渠道一样...),那么也可以有一个另外的表格统计毛爸和毛妈商店每个商品的销量。那么请问,能不能把三兄弟的表格矩阵和毛爸毛妈的表格矩阵相加?(解析在结尾)

    为什么需要矩阵相乘?

    假设最终完整统计小明一家五个淘宝手机店的三种商品销售数量如下:

    店主 iphone7销量 iphone8销量 iphoneX销量
    大毛 50 50 30
    二毛 20 30 40
    小明 20 20 30
    毛爸 50 50 60
    毛妈 60 30 40

    并且五个店手机售价完全一样,假设我们有:

    商品型号 销售价(千)
    iphone7 3
    iphone8 4
    iphoneX 7

    我们希望利用矩阵运算,得到一家五口每个人的总销售额表格,类似:

    店主 总销售额
    大毛 50x3+50x4+30x7
    二毛 20x3+30x4+40x7
    小明 20x3+20x4+30x7
    毛爸 50x3+50x4+60x7
    毛妈 60x3+30x4+40x7

    即:

    \begin{bmatrix} 50,&50,&50\\ 20,&30,&40\\ 20,&20,&30\\ 50,&50,&60\\ 60,&30,&40\\ \end{bmatrix}\times \begin{bmatrix} 3\\ 4\\ 7\\ \end{bmatrix}= \begin{bmatrix} 50\times3+50\times4+30\times7\\ 20\times3+30\times4+40\times7\\ 20\times3+20\times4+30\times7\\ 50\times3+50\times4+60\times7\\ 60\times3+30\times4+40\times7\\ \end{bmatrix}= \begin{bmatrix} 560\\ 460\\ 350\\ 770\\ 580\\ \end{bmatrix}

    我们需要一种运算,能够实现这个功能,数学上这个运算叫做矩阵的乘法,就是默认情况下矩阵相乘的算法,但跟我们熟悉的单个数字的数学乘法不是一回事,为了避免混淆,我们就只叫它相叉(只是临时叫法,正常就是叫矩阵乘法)。

    矩阵叉法运算法则

    矩阵相叉法则可以描述为:A矩阵叉B矩阵,A的第y行与B的第x列每个对应数字分别相乘再结果相加,就得到结果C矩阵的第x列第y行的值

    简单计作y行乘x列得第y行第x

    表示出来就是:
    \begin{bmatrix} a_1,&b_1,&c_1\\ a_2,&b_2,&c_2\\ \end{bmatrix}\times \begin{bmatrix} w_a\\ w_b\\ w_c\\ \end{bmatrix}= \begin{bmatrix} a_1\times w_a+a_1\times w_a+a_1\times w_a\\ a_2\times w_a+a_2\times w_a+a_2\times w_a\\ \end{bmatrix}

    从这里可以看出,虽然口口声声说是做矩阵乘法,其实是在做加权求和,——如果我们把单个手机售价作为权重考虑,那么iphone7的权重是3,iphone8权重是4,iphoneX权重是7。

    与双列矩阵相叉

    回到小明一家人的手机生意,对于第二个表格,我们增加一列进货价,全家人进货价一致(因为进货渠道一致...):

    商品型号 销售价(千) 进货价(千)
    iphone7 3 2
    iphone8 4 3
    iphoneX 7 5

    依照我们上面的矩阵相叉法则,会得到什么结果?
    五行两列!多出第二列表示每个人进货总成本!

    \begin{bmatrix} 50,&50,&50\\ 20,&30,&40\\ 20,&20,&30\\ 50,&50,&60\\ 60,&30,&40\\ \end{bmatrix}\times \begin{bmatrix} 3,2\\ 4,3\\ 7,5\\ \end{bmatrix}= \begin{bmatrix} 50\times3+50\times4+30\times7,50\times2+50\times3+30\times5\\ 20\times3+30\times4+40\times7,20\times2+30\times3+40\times5\\ 20\times3+20\times4+30\times7,20\times2+20\times3+30\times5\\ 50\times3+50\times4+60\times7,50\times2+50\times3+60\times5\\ 60\times3+30\times4+40\times7,60\times2+30\times3+40\times5\\ \end{bmatrix}= \begin{bmatrix} 560,400\\ 460,330\\ 350,250\\ 770,430\\ 580,410\\ \end{bmatrix}

    如果我们把结果的两列相减,就得到了每个人店铺的总利润:

    \begin{bmatrix} 560\\ 460\\ 350\\ 770\\ 580\\ \end{bmatrix}- \begin{bmatrix} 400\\ 330\\ 250\\ 430\\ 410\\ \end{bmatrix}= \begin{bmatrix} 160\\ 130\\ 100\\ 340\\ 170\\ \end{bmatrix}

    从这里看出,虽然大毛和妈妈卖的手机一样多数量(50+50+50=60+30+40),但还是妈妈多赚了1万(170-160),因为iPhone7只要投资4000块就能赚2000,而iphoneX要投资5000才行。

    矩阵叉法的限定

    矩阵乘法的现实意义很清晰,就是求矩阵A每一行被矩阵B每一列加权之后的和组成的新矩阵

    完善一下算法公式(w=weight,s=scale):

    \begin{bmatrix} a_1,&b_1,&c_1\\ a_2,&b_2,&c_2\\ \end{bmatrix}\times \begin{bmatrix} w_a,s_a\\ w_b,s_b\\ w_c,s_c\\ \end{bmatrix}= \begin{bmatrix} a_1\times w_a+b_1\times w_b+c_1\times w_c,a_1\times s_a+b_1\times s_b+c_1\times s_c\\ a_2\times w_a+b_2\times w_b+c_2\times w_c,a_2\times s_a+b_2\times s_b+c_2\times s_c\\ \end{bmatrix}

    从上面的定义和公式可以看出,两个相叉的矩阵,前一个矩阵的列数必须和后一个矩阵的行数一致,也就是每个数字都应该有对应的权重值(ws

    附加

    矩阵的叉乘之外,还有哈达马乘积,就是和矩阵加法那样,两个表的每个对应单元格都直接相乘,在什么情况下使用到哈达马乘积?请大家一起思考。

    通过这篇文章,希望大家认识到,所有的数学算法和数学公式,都是来自于真实应用,也是为了解决现实问题才被发明和记忆的,没有什么是空想出来的。

    矩阵乘法还有很多应用和含义解释,在后面的文章中我们会继续学习。


    思考题解析:对于三兄弟表格和爸妈的表格,数学上当然可以相加(注意要补加一行才行),但是实际上加在一起的结果是什么意义?结果难道是表示大毛+毛爸...二毛+毛妈...小明....这种店主的销售量吗?这样看上去小明真不是亲生的....


    欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


    每个人的智能新时代

    如果您发现文章错误,请不吝留言指正;
    如果您觉得有用,请点喜欢;
    如果您觉得很有用,欢迎转载~


    END

    相关文章

      网友评论

        本文标题:人工智能通识-数学-零基础矩阵运算

        本文链接:https://www.haomeiwen.com/subject/ugorsqtx.html