±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËΪʲôҪʹÓÃÆ«ÖÃÏîÄØ£¬´ÓһЩ»ù´¡¸ÅÄî½²Æð£¬ÈçºÎ¶ÔËü·ÖÀà?ÓÐÆ«ÖÃÏîºÍÎÞÆ«ÖÃÏîµÄ½á¹û·Ö±ðÊÇÔõÑùµÄÄØ?
±¾ÎÄÀ´×ÔÓÚÌÚÑ¶ÔÆ£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
Éñ¾ÔªÖв»Ìí¼ÓÆ«ÖÃÏî¿ÉÒÔÂ𣿴ð°¸ÊÇ£¬²»¿ÉÒÔ
ÿ¸öÈ˶¼ÖªµÀÉñ¾ÍøÂçÖÐµÄÆ«Öã¨bias£©ÊÇʲô£¬¶øÇÒ´ÓÈËÀàʵÏÖµÚÒ»¸ö¸ÐÖªÆ÷¿ªÊ¼£¬Ã¿¸öÈ˶¼ÖªµÀÉñ¾ÔªÐèÒªÌí¼ÓÆ«ÖÃÏî¡£µ«ÄãÊÇ·ñ¿¼ÂǹýÎÒÃÇΪʲôҪʹÓÃÆ«ÖÃÏîÄØ?¾ÍÎÒ¶øÑÔ£¬Ö±µ½²»¾ÃǰÎÒ²ÅŪÇå³þÕâ¸öÎÊÌâ¡£µ±Ê±ÎÒºÍÒ»¸ö±¾¿ÆÉúÌÖÂÛÁËһЩÉñ¾ÍøÂçÄ£ÐÍ£¬µ«²»ÖªºÎ¹ÊËý°Ñ¡°Æ«ÖÃÊäÈ롱£¨bias
input£©ºÍ¡°Í³¼Æ»ù²î¡±£¨ statistical bias£©¸ã»ìÁË¡£¶ÔÎÒÀ´Ëµ£¬ÏòËý½âÊÍÕâЩ¸ÅÄȻºÜÈÝÒ×£¬µ«ÎÒÈ´ºÜÄѽøÒ»²½µØ¸æËßËýÎÒÃÇΪʲôҪʹÓÃÆ«ÖÃÏî¡£¹ýÁËÒ»¶Îʱ¼ä£¬ÎÒ¾ö¶¨³¢ÊÔд´úÂëÀ´Ñо¿ÕâÒ»ÎÊÌâ¡£
ÈÃÎÒÃÇÏÈ´ÓһЩ¼òµ¥µÄ¸ÅÄʼ¡£
¸ÐÖªÆ÷ÊǶà²ã¸ÐÖªÆ÷(MLP)ºÍÈ˹¤Éñ¾ÍøÂçµÄǰÉí¡£ÖÚËùÖÜÖª£¬¸ÐÖªÆ÷ÊÇÒ»ÖÖÓÃÓڼලѧϰµÄ·ÂÉúËã·¨¡£Ëü±¾ÖÊÉÏÊÇÒ»¸öÏßÐÔ·ÖÀàÆ÷£¬ÈçͼËùʾ:
Ò»¸ö¼òµ¥µÄ¸ÐÖªÆ÷ʾÒâͼ

ÏÂÃæÈÃÎÒÃÇ¿¼²ìÒ»ÏÂÕâ¸öÄ£Ð͵ÄÊýѧ·½³Ì:
ÔÚÕâÀf(x)´ú±í¼¤»îº¯Êý(ͨ³£ÊÇÒ»¸ö½×Ô¾º¯Êý)¡£bÊÇÆ«ÖÃÏî, pºÍw·Ö±ðÊÇÊäÈëºÍÈ¨ÖØ¡£

Äã¿ÉÄÜ»á×¢Òâµ½ËüÓëÏßÐÔº¯ÊýµÄ±ê×¼ÐÎʽÊÇÏàËÆµÄ¡£Èç¹ûÎÒÃDz»ÊÊÓü¤»îº¯Êý£¬»ò½«¼¤»îº¯ÊýÌæ»»ÎªºãµÈÓ³É䣬ÕâЩ¹«Ê½½«ÊÇÏàͬµÄ(ÔÚÕâÀïΪÁË·½±ãÃèÊö£¬ÎÒÃÇÖ»¿¼Âǵ¥Ò»ÊäÈë)£º
ÔÚÕâÀïÆ«ÖÃÏîµÄÈ¨ÖØÊÇ1

±È½ÏÕâÁ½¸ö¹«Ê½£¬ºÜÃ÷ÏÔÎÒÃÇµÄÆ«ÖÃÏî¾Í¶ÔÓ¦ÁËÏßÐÔº¯ÊýÖеÄb¡£ÏÖÔÚµÄÎÊÌâ¾Íת»¯Îª£¬ÏßÐÔº¯ÊýÖеÄbΪʲôÄÇÃ´ÖØÒª?Èç¹ûÄã¹ýÈ¥¼¸ÄêûÓÐÉϹýÈκÎÏßÐÔ´úÊý¿Î³Ì(¾ÍÏñÎÒÒ»Ñù)£¬¿ÉÄܶÔһЩ¸ÅÄî²»¹»Á˽⡣µ«ÊÇÏÂÃæµÄÄÚÈÝÊǺÜÈÝÒ×Àí½âµÄ:

ÎÒÃǺÜÈÝÒ×¾Í×¢Òâµ½£¬µ±b=0ʱ£¬º¯Êý×ÜÊÇͨ¹ýÔµã[0,0]¡£µ±ÎÒÃDZ£³Öa²»±äµÄÇé¿öÏÂÒýÈëbʱ£¬Ðµĺ¯Êý×ÜÊÇÏ໥ƽÐеġ£ÄÇô£¬ÎÒÃÇÄÜ´ÓÖеõ½Ê²Ã´ÐÅÏ¢ÄØ?
ÎÒÃÇ¿ÉÒÔ˵£¬ÏµÊýa¾ö¶¨Á˺¯ÊýµÄ½Ç¶È£¬¶ø·ÖÁ¿b¾ö¶¨Á˺¯ÊýÓëxÖáµÄ½»µã¡£
´ËʱÎÒÏëÄãÒѾעÒâµ½ÁËһЩÎÊÌ⣬¶Ô°É?Èç¹ûûÓÐb£¬º¯Êý½«»áʧȥºÜ¶àÁé»îÐÔ¡£Ö»²»¹ý¶ÔһЩ·Ö²¼½øÐзÖÀàʱƫÖÃÏî¿ÉÄÜÓÐÓ㬵«²»ÊǶÔËùÓÐÇé¿ö¶¼ÓÐÓá£ÔõÑù²âÊÔËüµÄʵ¼ÊЧ¹ûÄØ?ÈÃÎÒÃÇʹÓÃÒ»¸ö¼òµ¥µÄÀý×Ó:ORº¯Êý¡£ÈÃÎÒÃÇÏÈÀ´¿´¿´ËüµÄ·Ö²¼:
»æÖÆÔڵѿ¨¶û×ø±êϵÖеÄORº¯Êý£º

ÎÒÏëÄãÒѾÏëÃ÷°×ÁËÕâ¸öÎÊÌ⡣ͼÖÐÁ½¸öµã([0,0]ºÍ[1,0])ÊÇÁ½¸ö²»Í¬µÄÀ࣬µ«ÈκÎÒ»Ìõ¹ý[0,0]µÄÖ±Ïß¶¼Ã»Óа취½«ÕâÁ½¸öµã·Ö¿ª¡£ÄÇô¸ÐÖª»úÈçºÎ¶ÔËü·ÖÀàÄØ?ÓÐÆ«ÖÃÏîºÍÎÞÆ«ÖÃÏîµÄ½á¹û·Ö±ðÊÇÔõÑùµÄÄØ?ÈÃÎÒÃÇͨ¹ý±à³Ì£¬¿´¿´½«»á·¢Éúʲô!ÏÂÃæÊÇÓÃPythonʵÏֵĸÐÖªÆ÷Éñ¾Ôª:
classPerceptron():def__init__
(self, n_input, alpha= 0.01, has_bias=True):
self.has_bias = has_bias
self.bias_weight = random.uniform(-1,1)
self.alpha = alpha
self.weights = []
for i in range(n_input):
self.weights.append(random.uniform (-1,1))defclassify(self,
input):
summation = 0if(self.has_bias):
summation += self.bias_weight * 1for i in range(len(self.weights)):
summation += self.weights[i] * input[i]
return self.activation (summation)defactivation(self,
value):if(value < 0):
return0else:
return1deftrain(self, input, target):
guess = self.classify(input)
error = target - guess
if(self.has_bias):
self.bias_weight += 1 * error * self.alpha
for i in range(len(self.weights)):
self.weights[i] += input[i] * error * self.alpha |
ûÓÐÆ«ÖÃÏîµÄ¸ÐÖªÆ÷

Ê×ÏÈ£¬ÈÃÎÒÃÇѵÁ·ÎÞÆ«ÖÃÏîµÄ¸ÐÖªÆ÷¡£ÎÒÃÇÖªµÀ£¬·ÖÀàÆ÷(ÔÚ±¾ÀýÖÐÊÇÎÒÃǵĺ¯Êý)×ÜÊÇͨ¹ý[0,0]µÄ¡£ÕýÈçÎÒÃÇ֮ǰËù˵µÄÄÇÑù£¬·ÖÀàÆ÷ÎÞ·¨·Ö¿ªÕâÁ½Àà¡£ÔÚÕâÖÖÇé¿öϾ¡¹ÜÒ»Ö±ÔÚÏò·ÖÀëÆ½Ãæ±Æ½ü£¬µ«Ëü»¹ÊDz»Äܽ«[0,0]ºÍ[1,0]·Ö¿ª£¬
ÓÐÆ«ÖÃÏîµÄ¸ÐÖªÆ÷

ÏÖÔÚÎÒÃÇÀ´¿´Ò»ÏÂÓÐÆ«ÖÃÏîµÄ¸ÐÖªÆ÷¡£Ê×ÏÈ£¬×¢Òâ·ÖÀàÆ÷µÄÁé»îÐÔ¡£ÈçǰËùÊö£¬ÔÚÕâÖÖÇé¿öϸÐÖªÆ÷¾ßÓиü´óµÄÁé»îÐÔ¡£´ËÍâÎÒÃÇ¿ÉÒÔ×¢Òâµ½£¬ËüÕýÔÚѰÕÒÓëÉÏÒ»¸öʾÀýÏàͬµÄÅбðÆ½Ãæ£¬µ«ÊÇÏÖÔÚËüÄܹ»ÕÒµ½·ÖÀëÊý¾ÝµÄ×î¼ÑλÖá£
ËùÒÔ£¬Æ«ÖÃÏîµÄÖØÒªÐÔÏÖÔÚÒѾºÜÇå³þÁË¡£ÎÒÖªµÀÄãÏÖÔÚ¿ÉÄÜÔÚ˼¿¼¼¤»îº¯Êý£¬ÎÒÃÇÔÚpythonÀý×ÓÖÐʹÓÃÁËÒ»¸ö½×Ô¾º¯Êý×÷Ϊ¼¤»îº¯Êý£¬Èç¹ûÎÒÃÇʹÓÃsigmoid×÷Ϊ¼¤»îº¯Êý£¬ËüµÄЧ¹û¿ÉÄÜ»á¸üºÃ£¿ÏàÐÅÎÒ:²»»áµÄ¡£ÈÃÎÒÃÇ¿´¿´µ±ÎÒÃǽ«sigmoidº¯Êý×÷ΪÏßÐÔº¯ÊýµÄ¼¤»îº¯Êý(¦Ò(f
(x)))»á·¢Éúʲô:

ÄãÊÇ·ñ×¢Òâµ½ÕâÀïµÄÀý×ÓºÍÏßÐÔº¯ÊýµÄÀý×ÓºÜÏàËÆ?sigmoidº¯ÊýËäÈ»¸Ä±äÁËÊä³öµÄÐÎ×´£¬µ«ÊÇÎÒÃÇÈÔÈ»Óöµ½Í¬ÑùµÄÎÊÌâ:Èç¹ûûÓÐÆ«ÖÃÏËùÓеĺ¯Êý¶¼»á¾¹ýԵ㡣µ±ÎÒÃÇÊÔͼÓÃÇúÏß·ÖÀëORº¯ÊýÖÐʱ£¬ËüÈÔÈ»µÃ²»µ½ÂúÒâµÄ½á¹û¡£Èç¹ûÄúÏë³¢ÊÔһϣ¬¿´¿´ËüÊÇÈçºÎ¹¤×÷µÄ£¬ÄúÖ»ÐèÒª¶Ôpython´úÂë×öһЩССµÄÐ޸ġ£
|