algorithms

					                      ‫ﺧﻮارزﻣﯿﺔ ‪Back propagation‬‬

                                         ‫3‪h‬‬
                            ‫11‪W‬‬
‫1‪X‬‬
          ‫1‬          ‫21‪W‬‬
                                        ‫1‪h‬‬         ‫01‪W‬‬

                                                                                  ‫‪O‬‬
                      ‫12‪W‬‬              ‫4‪h‬‬                          ‫‪N‬‬
                                                  ‫02‪W‬‬
‫2‪X‬‬                   ‫22‪W‬‬
            ‫2‬                           ‫2‪h‬‬
                                                              ‫ﻃﺒﻘﺔ اﻟﻤﺨﺮﺟﺎت‬


      ‫ﻃﺒﻘﺔ اﻟﻤﺪﺧﻼت‬                ‫اﻟﻄﺒﻘﺔ اﻟﺨﻔﯿﺔ‬


                ‫ﺧﻠﯿﺔ اﻟﺘﻐﺬﯾﺔ اﻟﺮاﺟﻌﺔ ‪Back propagation‬‬


                                    ‫1- ﻛﺘﺎﺑﺔ اﻟﺪوال اﻟﻤﻜﺘﺒﯿﺔ اﻟﻼزﻣﺔ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ‬
                                       ‫2- ﻛﺘﺎﺑﺔ ﻋﺒﺎرة ﺑﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ )( ‪main‬‬
                                                ‫3- ﻛﺘﺎﺑﺔ ﻗﻮس ﺑﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ {‬
                             ‫4- ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮات اﻟﻼزﻣﺔ ﻓﻲ اﻟﻌﻤﻞ وﻛﻤﺎ ﯾﻠﻲ :‬
‫;‪int w11,w12,w21,w22,w10,w20,I,j‬‬
‫;2‪real h1,h2,n,eo,eh1,eh‬‬
              ‫5- اﻋﻄﺎء ﻗﯿﻢ ﻋﺸﻮاﺋﯿﺔ ﻟﻼوزان ‪ w‬وذﻟﻚ ﺑﻮاﺳﻄﺔ داﻟﺔ ‪random‬‬
                                    ‫6- ﺗﻌﺮﯾﻒ ﻣﻌﺎﻣﻞ اﻟﺘﻌﻠﻢ واﻋﻄﺎﺋﮫ ﻗﯿﻤﺔ 1=‪a‬‬
    ‫7- ادﺧﺎل ﻣﺼﻔﻮﻓﺔ ﺗﻤﺜﻞ ﻣﺪﺧﻼت وﻣﺨﺮﺟﺎت اﻟﺒﻮاﺑﺔ اﻟﻤﻨﻄﻘﯿﺔ اﻟﺘﻲ ﺗﻢ اﻟﺘﺪرب‬
                                              ‫ﻋﻠﯿﮭﺎ وﺗﻜﻮن ﻛﻤﺎ ﯾﻠﻲ ]3[]4[‪x‬‬
                                           ‫8- ﻛﺘﺎﺑﺔ دوارة اﻟﻤﺼﻔﻮﻓﺔ وﻛﻤﺎ ﯾﻠﻲ :‬
‫)++‪for (i=0; i<4 ;i‬‬
‫)++‪for (j=0; i<3 ;j‬‬

    ‫9- ﺗﻤﺮﯾﺮ اﻟﻤﺪﺧﻼت ﻋﻠﻰ اﻟﺸﺒﻜﺔ وﺻﻮﻻً اﻟﻰ ﻃﺒﻘﺔ اﻟﻤﺨﺮﺟﺎت وذﻟﻚ ﺣﺴﺐ‬
                                                ‫اﻟﻘﻮاﻧﯿﻦ اﻟﺘﺎﻟﯿﺔ :‬
‫2‪h1=w11*x1+w21*x‬‬
‫2‪h2=w12*x1+w22*x‬‬
‫1‪h3=1/1+e-h‬‬
‫2‪h4=1/1+e-h‬‬
‫6- اﻟﺤﺼﻮل ﻋﻠﻰ ﻣﺠﻤﻮع اﻟﻤﺪﺧﻼت اﻟﺘﻲ ﺗﺪﺧﻞ ﻃﺒﻘﺔ اﻟﻤﺨﺮﺟﺎت وذﻟﻚ ﻣﻦ ﺧﻼل‬
                                                    ‫اﻟﻘﺎﻧﻮن اﻟﺘﺎﻟﻲ :-‬

                                            ‫1‬
‫4‪N=w10*h3+w20*h‬‬
            ‫7- اﺳﺘﺨﺮاج ﻗﯿﻤﺔ اﻟﻤﺨﺮج اﻟﻔﻌﻠﻲ ) اﻟﻨﺎﺗﺞ ( ﻟﻠﺸﺒﻜﺔ وذﻟﻚ ﻛﻤﺎ ﯾﻠﻲ :‬
         ‫‪-N‬‬
‫‪O=1/1+e‬‬
  ‫8- ﻣﻘﺎرﻧﺔ اﻟﻤﺨﺮج اﻟﻔﻌﻠﻲ ) اﻟﻨﺎﺗﺞ ( ﻣﻊ اﻟﻤﺨﺮج اﻟﻤﻄﻠﻮب وﻋﻨﺪ اﻛﺘﺸﺎف ﺧﻄﺄ‬
    ‫ﺑﯿﻦ اﻟﻤﻘﺎرﻧﺘﯿﻦ ﻓﻔﻲ ھﺬه اﻟﺤﺎﻟﺔ ﻓﺎﻧﻨﺎ ﻧﺤﺘﺎج اﻟﻰ ﺗﻌﺪﯾﻞ اﻻوزان وﺗﺤﺪﯾﺪ ﻣﻘﺪار‬
                                                         ‫اﻟﺨﻄﺄ وﻛﻤﺎ ﯾﻠﻲ :-‬
‫)‪eo=(T-O) * O* ( 1- O‬‬
   ‫9- ﺗﻌﺪﯾﻞ اﻻوزان اﻟﺘﻲ ﺗﺮﺑﻂ ﺑﯿﻦ ﻃﺒﻘﺔ اﻟﻤﺨﺮﺟﺎت واﻟﻄﺒﻘﺔ اﻟﺨﻔﯿﺔ وذﻟﻚ ﺑﻮاﺳﻄﺔ‬
                                                               ‫اﻟﻘﻮاﻧﯿﻦ اﻟﺘﺎﻟﯿﺔ :-‬
‫3‪W10new=W10old+a*eo*h‬‬
‫3‪W20new=W20old+a*eo*h‬‬
   ‫01- ﻧﺴﺘﻤﺮ ﻋﻠﻰ ﻧﻔﺲ اﻟﻄﺮﯾﻘﺔ ﻟﻜﻦ ھﺬه اﻟﻤﺮة ﺑﯿﻦ اﻟﻄﺒﻘﺔ اﻟﺨﻔﯿﺔ وﻃﺒﻘﺔ اﻟﻤﺪﺧﻼت‬
‫‪eh1=h3(1-h3)*w10*eo‬‬
‫‪eh2=h4(1-h4)*w20*eo‬‬
                           ‫11- وﺑﻌﺪ اﻛﺘﺸﺎف اﻟﺨﻄﺄ ﯾﺘﻢ ﺗﻌﺪﯾﻞ اﻻوزان وﻛﻤﺎ ﯾﻠﻲ:‬
‫1‪W11new=W11old+a*eh1*X‬‬
‫1‪W12new=W12old+a*eh2*X‬‬
‫2‪W21new=W21old+a*eh1*X‬‬
‫2‪W22new=W22old+a*eh21*X‬‬                                 ‫21- ﻧﮭﺎﯾﺔ اﻟﺨﻮارزﻣﯿﺔ.‬


            ‫ﻣﻼﺣﻈﺔ ﻣﮭﻤﺔ // ان ﻗﯿﻤﺔ ﻣﻌﺎﻣﻞ اﻟﺘﻌﻠﻢ اﻟﺪﻗﯿﻘﺔ ھﻲ اﻟﻨﺼﻒ اي = 5.0‬




                                        ‫2‬
  ‫ﻣﺜﺎل \\ ﻗﻢ ﺑﺘﺪرﯾﺐ ﺷﺒﻜﺔ ‪ Back propagation‬ﻟﻠﺘﻌﻠﻢ ﻋﻠﻰ ﻣﺪﺧﻼت وﻣﺨﺮﺟﺎت‬
                     ‫ﺑﻮاﺑﺔ ‪ OR‬ﻋﻠﻤﺎً ان ﻣﻌﺎﻣﻞ اﻟﺘﻌﻠﻢ 1 واﻻوزان ﻋﺸﻮاﺋﯿﺔ.‬

  ‫1‪x‬‬   ‫‪x2 T‬‬                         ‫ﺳﻮف ﻧﺪرب اﻟﺼﻒ اﻻول ﻣﻦ اﻟﺒﻮاﺑﺔ‬
  ‫0‬    ‫0 0‬
  ‫0‬    ‫1 1‬
  ‫1‬    ‫1 0‬
  ‫1‬    ‫1 1‬
‫0=1‪x‬‬   ‫1=02‪x2=0 , T=0 , w11=1 , w12=0 , w21=0 , w22=1, w10=1, w‬‬

            ‫* ﻟﻜﻲ ﻧﺪرب اﻟﺨﻠﯿﺔ اﻟﻤﻄﻠﻮﺑﺔ ﯾﺠﺐ ان ﻧﻌﺮف ﺑﻌﺾ اﻟﻤﺼﻄﻠﺤﺎت اﻟﺘﺎﻟﯿﺔ:‬
              ‫-1- 1‪ : h‬ﯾﻤﺜﻞ ﻣﺠﻤﻮع اﻟﻤﺪﺧﻼت ﻟﻠﺨﻠﯿﺔ اﻻوﻟﻰ ﺿﻤﻦ اﻟﻄﺒﻘﺔ اﻟﺨﻔﯿﺔ .‬
               ‫-2- 2‪ : h‬ﯾﻤﺜﻞ ﻣﺠﻤﻮع اﻟﻤﺪﺧﻼت ﻟﻠﺨﻠﯿﺔ اﻟﺜﺎﻧﯿﺔ ﺿﻤﻦ اﻟﻄﺒﻘﺔ اﻟﺨﻔﯿﺔ .‬
                              ‫-3- 3‪ : h‬ﯾﻤﺜﻞ ﻣﺨﺮج اﻟﺨﻠﯿﺔ اﻻوﻟﻰ ﻣﻦ اﻟﻄﺒﻘﺔ اﻟﺨﻔﯿﺔ .‬
                                ‫-4- 4‪ : h‬ﯾﻤﺜﻞ ﻣﺨﺮج اﻟﺨﻠﯿﺔ اﻻوﻟﻰ ﻣﻦ اﻟﻄﺒﻘﺔ اﻟﺨﻔﯿﺔ‬
                                   ‫-5- ‪ : N‬ﻣﺠﻤﻮع ﻣﺪﺧﻼت ﺧﻠﯿﺔ ﻃﺒﻘﺔ اﻟﻤﺨﺮﺟﺎت .‬
                                                ‫-6- ‪ : O‬ﯾﻤﺜﻞ اﻟﻤﺨﺮج اﻟﻔﻌﻠﻲ ﻟﻠﺨﻠﯿﺔ‬
                                                   ‫-7- ‪ : T‬اﻟﻤﺨﺮج اﻟﻤﻄﻠﻮب ﻟﻠﺨﻠﯿﺔ‬

                                     ‫* ﺳﻮف ﻧﺒﺪا اﻟﺤﻞ وﺣﺴﺐ اﻟﺨﻮارزﻣﯿﺔ :-‬
    ‫1- ﺗﻤﺮﯾﺮ اﻟﻤﺪﺧﻼت ﻋﻠﻰ اﻟﺸﺒﻜﺔ وﺻﻮﻻً اﻟﻰ ﻃﺒﻘﺔ اﻟﻤﺨﺮﺟﺎت وذﻟﻚ ﺣﺴﺐ اﻟﻘﺎﻧﻮن‬
                                                                    ‫اﻟﺘﺎﻟﻲ :‬
  ‫2‪h1= w11* x1+ w21 * x‬‬
     ‫0 * 0 + 0 *1 =‬
     ‫0=‬
  ‫2‪h2= w12* x1 +w22 * x‬‬
     ‫0*1+0*0=‬
     ‫0 =‬
  ‫1‪h3 = 1/1+e-h‬‬
     ‫0-‪= 1/1+e‬‬
     ‫5.0 =‬
  ‫2‪h4 = 1/1+e-h‬‬
     ‫0-‪= 1/1+e‬‬
     ‫5.0 =‬
     ‫2- اﻟﺤﺼﻮل ﻋﻠﻰ ﻣﺠﻤﻮع اﻟﻤﺪﺧﻼت اﻟﺘﻲ ﺗﺪﺧﻞ ﻃﺒﻘﺔ اﻟﻤﺨﺮﺟﺎت وذﻟﻚ ﻣﻦ ﺧﻼل‬
                                                        ‫اﻟﻘﺎﻧﻮن اﻟﺘﺎﻟﻲ :-‬
  ‫4‪N= w10* h3 + w20 * h‬‬


                                        ‫3‬
  ‫5.0 * 1 + 5.0 *1 =‬
  ‫1=‬
                ‫3- اﺳﺘﺨﺮاج ﻗﯿﻤﺔ اﻟﻤﺨﺮج اﻟﻔﻌﻠﻲ ) اﻟﻨﺎﺗﺞ ( ﻟﻠﺸﺒﻜﺔ وذﻟﻚ ﻛﻤﺎ ﯾﻠﻲ :‬
          ‫‪-N‬‬
‫‪O=1/1+e‬‬
 ‫1-‪= 1/1+e‬‬
 ‫60137.0 - =‬
  ‫4- ﻣﻘﺎرﻧﺔ اﻟﻤﺨﺮج اﻟﻔﻌﻠﻲ ) اﻟﻨﺎﺗﺞ ( ﻣﻊ اﻟﻤﺨﺮج اﻟﻤﻄﻠﻮب وﻋﻨﺪ اﻛﺘﺸﺎف ﺧﻄﺄ ﺑﯿﻦ‬
   ‫اﻟﻤﻘﺎرﻧﺘﯿﻦ ﻓﻔﻲ ھﺬه اﻟﺤﺎﻟﺔ ﻓﺎﻧﻨﺎ ﻧﺤﺘﺎج اﻟﻰ ﺗﻌﺪﯾﻞ اﻻوزان وﺗﺤﺪﯾﺪ ﻣﻘﺪار اﻟﺨﻄﺄ‬
                                                                  ‫وﻛﻤﺎ ﯾﻠﻲ :-‬
‫)‪eo=(T-O) * O* ( 1- O‬‬
  ‫)) 60137.0 -( -1 ( * ) 60137.0 - ( * )60137.0 - ( – 0( =‬
  ‫)ﻣﻘﺪار ﻧﺴﺒﺔ اﻟﺨﻄﺎ ﺑﯿﻦ اﻟﻤﺨﺮج اﻟﻤﻄﻠﻮب واﻟﻤﺨﺮج اﻟﻔﻌﻠﻲ ( 37341 .0 - =‬

      ‫5- ﺑﻌﺪ اﻛﺘﺸﺎف اﻟﺨﻄﺎ ﻓﺎﻧﮫ ﺳﻮف ﯾﺘﻢ ﺗﻌﺪﯾﻞ اﻻوزان اﻟﺘﻲ ﺗﺮﺑﻂ ﺑﯿﻦ ﻃﺒﻘﺔ‬
                    ‫اﻟﻤﺨﺮﺟﺎت واﻟﻄﺒﻘﺔ اﻟﺨﻔﯿﺔ وذﻟﻚ ﺑﻮاﺳﻄﺔ اﻟﻘﻮاﻧﯿﻦ اﻟﺘﺎﻟﯿﺔ :-‬
‫3‪W10new=W10old+ a * eo *h‬‬
      ‫5.0 * ) 37341.0- ( * 1 + 1 =‬
      ‫31829.0 =‬
‫3‪W20new=W20old+a*eo*h‬‬
       ‫5.0 * ) 37341.0- ( * 1 + 1 =‬
      ‫31829.0 =‬
   ‫6- ﻧﺴﺘﻤﺮ ﻋﻠﻰ ﻧﻔﺲ اﻟﻄﺮﯾﻘﺔ ﻟﻜﻦ ھﺬه اﻟﻤﺮة ﺑﯿﻦ اﻟﻄﺒﻘﺔ اﻟﺨﻔﯿﺔ وﻃﺒﻘﺔ اﻟﻤﺪﺧﻼت‬

‫‪eh1=h3(1-h3)*w10*eo‬‬
   ‫) 37341.0- ( * 31829.0 * ) 5.0 -1 ( 5.0 =‬
   ‫53330.0 =‬
‫‪eh2=h4(1-h4)*w20*eo‬‬
   ‫) 37341.0- ( * 31829.0 * ) 5.0 -1 ( 5.0 =‬
   ‫53330.0 =‬

                     ‫7- وﺑﻌﺪ اﻛﺘﺸﺎف اﻟﺨﻄﺄ ﯾﺘﻢ ﺗﻌﺪﯾﻞ اﻻوزان وﻛﻤﺎ ﯾﻠﻲ:‬
‫1‪W11new =W11old+a*eh1*X‬‬
       ‫0 * 53330.0 *1 +1 =‬
       ‫1=‬
‫1‪W12new=W12old+a*eh2*X‬‬
      ‫0 * 53330.0 *1+ 0 =‬
      ‫0=‬


                                      ‫4‬
‫2‪W21new=W21old+a*eh1*X‬‬
      ‫0 * 53330.0 * 1+ 0 =‬
      ‫0=‬
‫2‪W22new=W22old+a*eh21*X‬‬
      ‫0 * 53330.0 * 1 + 1 =‬
      ‫1=‬


‫ﻣﻼﺣﻈﺔ //* اﻻوزان اﻟﺠﺪﯾﺪة ﻟﻢ ﺗﺘﻐﯿﺮ وذﻟﻚ ﺑﺴﺒﺐ اﻟﻤﺪﺧﻼت اﻟﺼﻔﺮﯾﺔ ) 2‪( x1 , x‬‬
                               ‫وﻟﻜﻦ اﻟﻮﺿﻊ ﺳﻮف ﯾﺘﻐﯿﺮ ﻣﻊ ﺑﻘﯿﺔ اﻟﻤﺪﺧﻼت .‬

 ‫* رﺑﻤﺎ ﺗﻜﻮن ﺑﻌﺾ اﻟﻨﺘﺎﺋﺞ ﻏﯿﺮ ﻣﻀﺒﻮﻃﺔ وﻟﻜﻦ اﻟﻤﮭﻢ ھﻮ ﻓﮭﻢ ﻋﻤﻞ اﻟﺨﻠﯿﺔ اﻟﻌﺼﺒﯿﺔ‬
                                     ‫وﻛﯿﻔﯿﺔ ﺗﻌﺎﻣﻠﮭﺎ ﻣﻊ اﻟﻤﺪﺧﻼت واﻟﻤﺨﺮﺟﺎت .‬

‫*ﺗﺘﻮﻗﻒ ﻋﻤﻠﯿﺔ اﻟﺘﺪرﯾﺐ ﻋﻨﺪﻣﺎ ﺗﺼﺒﺢ اﻟﻨﺘﯿﺠﺔ اﻟﻨﺎﺗﺠﺔ ﻣﻦ اﻟﺘﺪرﯾﺐ ﻣﻄﺎﺑﻘﺔ إﻟﻰ اﻟﻨﺘﯿﺠﺔ‬
                                                          ‫اﻷﺻﻠﯿﺔ أي : ‪T=O‬‬




                                     ‫5‬
                            ‫ﺧﻮارزﻣﯿﺔ ‪Hopfield‬‬

  ‫ھﺬه اﻟﺨﻮارزﻣﯿﺔ ﺳﻮف ﯾﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻌﮭﺎ ﻋﻠﻰ اﺳﺎس رﺳﻤﮭﺎ ﻓﻘﻂ ﻓﺨﻠﯿﺔ ‪Hopfield‬‬
 ‫ﻟﮭﺎ ﺧﺎﺻﯿﺔ ﺗﻮزﯾﻊ اﻟﻤﺪﺧﻼت ﻋﻠﻰ ﺟﻤﯿﻊ اﻟﺨﻼﯾﺎ اﻟﻤﻮﺟﻮدة ﻣﻌﮭﺎ وﻟﻜﻦ ﻻﺗﻌﻄﻲ ﻟﻨﻔﺴﮭﺎ‬
     ‫اي ﻣﺪﺧﻞ وھﻜﺬا ﺑﻘﯿﺔ اﻟﺨﻼﯾﺎ اﻟﻤﻘﺎﺑﻠﺔ ﻟﮭﺎ ) اي ﯾﺘﻢ ﺗﺒﺎدل اﻟﻤﺪﺧﻼت ﺑﯿﻨﮭﺎ ( وﯾﻤﻜﻦ‬
                                          ‫وﺿﻊ ﺧﻮارزﻣﯿﺔ ﺑﺴﯿﻄﺔ ﻟﮭﺎ وﻛﻤﺎ ﯾﻠﻲ :‬

        ‫1- ﻛﺘﺎﺑﺔ اﻟﺪوال اﻟﻤﻜﺘﺒﯿﺔ اﻟﻼزﻣﺔ وﻣﻦ اھﻤﮭﺎ ﻣﻜﺘﺒﺔ اﻟﺮﺳﻢ ) ‪( graphics‬‬
                                    ‫2- وﺿﻊ ﻋﺒﺎرة )( ‪ main‬وﻗﻮس اﻟﺒﺪاﯾﺔ {‬
                                         ‫3- ﺗﻌﺮﯾﻒ ﻣﺤﺮﻛﺎت اﻟﺮﺳﻢ وﻛﻤﺎ ﯾﻠﻲ :‬
‫‪int gdriver = DETECT ,gmode , errorcode‬‬
‫) ‪initgraph ( &gdriver , &gmode‬‬
    ‫4- ﺗﻌﺮﯾﻒ اﺣﺪاﺛﯿﺎت اﻟﺪاﺋﺮة ) اﻟﺘﻲ ﺗﻤﺜﻞ اﻟﺨﻠﯿﺔ اﻟﻌﺼﺒﯿﺔ ( واﺣﺪاﺛﯿﺎت اﻟﻤﺴﺘﻘﯿﻢ‬
                                  ‫)ﯾﻤﺜﻞ ﺧﻄﻮط اﻟﺮﺑﻂ ﺑﯿﻦ اﻟﺨﻼﯾﺎ اﻟﻌﺼﺒﯿﺔ (‬
           ‫5- وﺿﻊ دوارة ﺗﻤﺜﻞ ﻋﺪد اﻟﺪواﺋﺮ اﻟﻤﺮﺳﻮﻣﺔ ) ﻋﺪد اﻟﺨﻼﯾﺎ اﻟﻌﺼﺒﯿﺔ (‬
                     ‫6- رﺳﻢ ﻋﺪد ﻣﻦ اﻟﺨﻄﻮط وﯾﺘﻢ ﺿﺒﻄﮭﺎ وﻓﻖ اﺣﺪاﺛﯿﺎت ﻣﻌﯿﻨﺔ‬
                                                                     ‫7- اﻟﻨﮭﺎﯾﺔ‬



                    ‫1‪X‬‬
                            ‫1‬                                ‫3‬



                    ‫2‪X‬‬
                              ‫2‬                              ‫5‬


                                        ‫ﺧﻠﯿﺔ ‪Hopfield‬‬



 ‫ﻣﻼﺣﻈﺔ\\ ﺧﻮارزﻣﯿﺔ ‪ Hopfield‬ﺗﻜﻮن ﻋﻠﻰ اﻻﻗﻞ ﺧﻠﯿﺘﯿﻦ وﻟﯿﺲ اﻗﻞ ﻟﻜﻲ ﯾﺘﻢ ﺗﺒﺎدل‬
                      ‫اﻟﻤﺪﺧﻼت ﺑﯿﻨﮭﺎ ، ورﺑﻤﺎ ﯾﺼﻞ ﻋﺪدھﺎ اﻟﻰ اﻟﻒ ﺧﻠﯿﺔ او اﻛﺜﺮ .‬




                                        ‫6‬
                            ‫ﺧﻮارزﻣﯿﺔ ‪perceptron‬‬
                               ‫1‪w‬‬
                    ‫1‪X‬‬
                    ‫2‪X‬‬                   ‫1‬               ‫‪O‬‬

                               ‫2‪w‬‬

                            ‫ﺧﻠﯿﺔ ‪perceptron‬‬


                                       ‫1- ﻛﺘﺎﺑﺔ اﻟﺪوال اﻟﻤﻜﺘﺒﯿﺔ اﻟﻼزﻣﺔ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ‬
                                          ‫2- ﻛﺘﺎﺑﺔ ﻋﺒﺎرة ﺑﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ )( ‪main‬‬
                                                   ‫3- ﻛﺘﺎﺑﺔ ﻗﻮس ﺑﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ {‬
                                ‫4- ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮات اﻟﻼزﻣﺔ ﻓﻲ اﻟﻌﻤﻞ وﻛﻤﺎ ﯾﻠﻲ :‬
‫;‪int I,j,s‬‬
                  ‫5- اﻋﻄﺎء ﻗﯿﻢ ﻋﺸﻮاﺋﯿﺔ ﻟﻼوزان ‪ w‬وذﻟﻚ ﺑﻮاﺳﻄﺔ داﻟﺔ ‪random‬‬
‫)‪w1,w2 rand () float (RAND-MAX‬‬
                                        ‫6- ﺗﻌﺮﯾﻒ ﻣﻌﺎﻣﻞ اﻟﺘﻌﻠﻢ واﻋﻄﺎﺋﮫ ﻗﯿﻤﺔ 1=‪a‬‬
                                    ‫7- ﺗﻌﺮﯾﻒ ﻣﺘﻐﯿﺮ ﯾﻤﺜﻞ ﺣﺪ اﻟﻌﺘﺒﺔ ﻧﻔﺮض اﺳﻤﮫ ‪r‬‬
                                      ‫8- ﺗﻌﺮﯾﻒ ﻣﺆﺷﺮ ﯾﺪل ﻋﻠﻰ ﺣﺎﻟﺔ اﻟﺨﻄﺎ ‪error‬‬
  ‫9- ادﺧﺎل ﻣﺼﻔﻮﻓﺔ ﺗﻤﺜﻞ ﻣﺪﺧﻼت وﻣﺨﺮﺟﺎت اﻟﺒﻮاﺑﺔ اﻟﻤﻨﻄﻘﯿﺔ اﻟﺘﻲ ﺗﻢ اﻟﺘﺪرب ﻋﻠﯿﮭﺎ‬
                                                       ‫وﺗﻜﻮن ﻛﻤﺎ ﯾﻠﻲ ]3[]4[‪x‬‬
                          ‫01- وﺿﻊ ﻋﺒﺎرة ﻟﻠﺮﺟﻮع ﻓﻲ ﺣﺎﻟﺔ اﻟﺨﻄﺎ ‪goto agine‬‬
                                           ‫11- ﻛﺘﺎﺑﺔ دوارة اﻟﻤﺼﻔﻮﻓﺔ وﻛﻤﺎ ﯾﻠﻲ :‬
‫)++‪for (i=0; i<4 ;i‬‬
‫)++‪for (j=0; i<3 ;j‬‬
     ‫21- ﺗﻌﻠﯿﻢ اﻟﺨﻠﯿﺔ ﻋﻠﻰ اﺳﺘﺨﺮاج وﺣﺴﺎب اﻟﻘﯿﻤﺔ اﻟﺼﺤﯿﺤﺔ ﻟﻠﺒﻮاﺑﺔ وذﻟﻚ ﻣﻦ ﺧﻼل‬
                                                                   ‫اﻟﻘﺎﻧﻮن اﻻﺗﻲ :‬
‫‪s= wi* xi+ wi * xi‬‬
   ‫31- ﻣﻘﺎرﻧﺔ اﻟﻘﯿﻤﺔ اﻟﻨﺎﺗﺠﺔ ﻣﻦ اﻟﻤﻌﺎدﻟﺔ ‪ s‬ﻣﻊ ﺣﺪ اﻟﻌﺘﺒﺔ ﺣﯿﺚ ان ﺣﺪ اﻟﻌﺘﺒﺔ ﯾﻜﻮن‬
     ‫اﻣﺎ ﯾﺴﺎوي 1 او اﺻﻐﺮ او ﯾﺴﺎوي اﻟﺼﻔﺮ وﻣﻦ ﺛﻢ ﻣﻘﺎرﻧﺔ اﻟﻨﺘﯿﺠﺔ ﻣﺮة ﺛﺎﻧﯿﺔ ﻣﻊ‬
   ‫اﻟﻨﺘﯿﺠﺔ اﻻﺻﻠﯿﺔ ﻓﺎذا ﻇﮭﺮت ﺣﺎﻟﺔ اﻟﺨﻄﺎ ﻓﺎﻧﻨﺎ ﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ ﻧﻐﯿﺮ اﻻوزان وذﻟﻚ‬
                                                       ‫ﻣﻦ ﺧﻼل اﻟﻤﻌﺎدﻻت اﻻﺗﯿﺔ‬
        ‫1‪)) *x‬اﻟﻨﺎﺗﺠﺔ( ‪)- o‬اﻟﻤﻄﻠﻮﺑﺔ(‪w1new=w1old +a*(o desired‬‬
        ‫2‪)) *x‬اﻟﻨﺎﺗﺠﺔ( ‪)- o‬اﻟﻤﻄﻠﻮﺑﺔ(‪w2new=w2old +a*(o desired‬‬

             ‫41- ﻧﺴﺘﻤﺮ ﻓﻲ ﻋﻤﻠﯿﺔ ﺗﻐﯿﺮ اﻻوزان اﻟﻰ ان ﯾﺘﻢ ﺗﺼﺤﯿﺢ ﻛﻞ اﻟﺤﺎﻻت اﻟﺨﻄﺎ‬
                                                         ‫51- ﻧﮭﺎﯾﺔ اﻟﺨﻮارزﻣﯿﺔ‬


                                        ‫7‬
‫ﻣﺜﺎل \\ ﻗﻢ ﺑﺘﺪرﯾﺐ ﺷﺒﻜﺔ ‪ perceptron‬ﻟﻠﺘﻌﻠﻢ ﻋﻠﻰ ﻣﺪﺧﻼت وﻣﺨﺮﺟﺎت ﺑﻮاﺑﺔ ‪OR‬‬
                     ‫ﻋﻠﻤﺎً ان ﻣﻌﺎﻣﻞ اﻟﺘﻌﻠﻢ 1 واﻻوزان ﻧﻔﺮﺿﮭﺎ ﻋﺸﻮاﺋﯿﺔ.‬

‫1‪x‬‬   ‫2‪x‬‬   ‫‪T‬‬                                 ‫ﺳﻮف ﻧﺪرب اﻟﺼﻒ اﻻول ﻣﻦ اﻟﺒﻮاﺑﺔ‬
‫0‬    ‫0‬    ‫0‬
‫0‬    ‫1‬    ‫1‬
‫1‬    ‫0‬    ‫1‬
‫1‬    ‫1‬    ‫1‬

                  ‫0 =2‪x1=0 , x2 = 0 ,T=0 , w1= 0, w‬‬


      ‫1- ﺗﻌﻠﯿﻢ اﻟﺨﻠﯿﺔ ﻋﻠﻰ اﺳﺘﺨﺮاج وﺣﺴﺎب اﻟﻘﯿﻤﺔ اﻟﺼﺤﯿﺤﺔ ﻟﻠﺒﻮاﺑﺔ وذﻟﻚ ﻣﻦ ﺧﻼل‬
                                                       ‫ﻣﻌﺎدﻟﺔ اﻟﻤﺠﻤﻮع اﻟﺘﺎﻟﯿﺔ :‬
‫2‪s= w1* x1+ w2 * x‬‬
 ‫0* 0 +0 *0=‬
  ‫‪= 0 == T‬‬
  ‫2- ﻣﻘﺎرﻧﺔ اﻟﻘﯿﻤﺔ اﻟﻨﺎﺗﺠﺔ ﻣﻦ اﻟﻤﻌﺎدﻟﺔ ‪ s‬ﻣﻊ ﺣﺪ اﻟﻌﺘﺒﺔ ﺣﯿﺚ ان ﺣﺪ اﻟﻌﺘﺒﺔ ﯾﻜﻮن اﻣﺎ‬
      ‫ﯾﺴﺎوي 1 او اﺻﻐﺮ او ﯾﺴﺎوي اﻟﺼﻔﺮ وﻣﻦ ﺛﻢ ﻣﻘﺎرﻧﺔ اﻟﻨﺘﯿﺠﺔ ﻣﺮة ﺛﺎﻧﯿﺔ ﻣﻊ‬
 ‫اﻟﻨﺘﯿﺠﺔ اﻻﺻﻠﯿﺔ ﻓﺎذا ﻛﺎﻧﺖ ﻣﻄﺎﺑﻘﺔ وﺧﺎﻟﯿﺔ ﻣﻦ اﻟﺨﻄﺎ ﻓﺎﻧﮫ ﺳﻮف ﯾﺘﻢ اﻻﻧﺘﻘﺎل اﻟﻰ‬
                                 ‫اﻟﺼﻒ اﻟﺘﺎﻟﻲ ) 1= ‪. ( x1= 0 , x2 =1 , T‬‬

                                                   ‫3- ﻛﺘﺎﺑﺔ ﻣﻌﺎدﻟﺔ اﻟﻤﺠﻤﻮع :-‬
‫2‪s= w1* x1+ w2 * x‬‬
 ‫1*0+0*0=‬
 ‫‪= 0 == error‬‬    ‫) 1= ‪( T‬‬

 ‫4- ﻇﮭﺮت ﺣﺎﻟﺔ اﻟﺨﻄﺎ و ﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ ﻧﻐﯿﺮ اﻻوزان وذﻟﻚ ﻣﻦ ﺧﻼل اﻟﻤﻌﺎدﻻت‬
                                                                 ‫اﻻﺗﯿﺔ‬
‫1‪)) * x‬اﻟﻨﺎﺗﺠﺔ( ‪)- o‬اﻟﻤﻄﻠﻮﺑﺔ(‪w1new=w1old +a*(o desired‬‬
      ‫0*)0–1(* 1+0=‬
       ‫0=‬
‫2‪)) * x‬اﻟﻨﺎﺗﺠﺔ( ‪)- o‬اﻟﻤﻄﻠﻮﺑﺔ(‪w2new=w2old +a*(o desired‬‬
      ‫1*)0–1(*1+0=‬
      ‫1=‬
 ‫5- ﻧﻄﺒﻖ اﻟﻤﻌﺎدﻟﺔ اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺠﻤﻮع وﻟﻜﻦ ھﺬه اﻟﻤﺮة ﻣﻊ اﻻوزان اﻟﺠﺪﯾﺪة واﻟﺼﻒ‬
                 ‫اﻟﺘﺎﻟﻲ ﻣﻦ اﻟﻤﺪﺧﻼت ) 1 =‪ ( x1= 1 , x2= 0 , T‬وﻛﻤﺎ ﯾﻠﻲ :‬


                                      ‫8‬
‫2‪s= w1* x1+ w2 * x‬‬
 ‫1*1+1*0=‬
 ‫‪= 1 == T‬‬
                ‫واﻻن ﻧﻄﺒﻘﮭﺎ ﻣﻊ اﻟﺼﻒ اﻻﺧﯿﺮ ) 1= ‪( X1= 1, X2 =1 , T‬‬
‫2‪s= w1* x1+ w2 * x‬‬
 ‫1 * 1 + 1 *1 =‬
  ‫2=‬                         ‫‪T‬‬     ‫وھﺬه اﻟﻘﯿﻤﺔ ﻣﻄﺎﺑﻘﺔ ﻟﺸﺮط ﺣﺪ اﻟﻌﺘﺒﺔ و‬

  ‫وﻟﺘﺪرﯾﺐ اﻟﺨﻠﯿﺔ ﺗﻄﺒﻖ اﻟﻤﻌﺎدﻟﺔ ﻋﻠﻰ ﻛﻞ اﻟﻤﺪﺧﻼت ﻣﻊ ﺗﻜﺮار اﻟﻌﻤﻠﯿﺔ ﺣﺘﻰ ﺗﺴﺘﻘﺮ‬
  ‫اﻻوزان ﻋﻨﺪ ﺣﺪ ﻣﻌﯿﻦ وﻻﺗﺘﻐﯿﺮ ﺑﻌﺪھﺎ ، اي اﻧﮫ ﺑﻌﺪ ان ﻃﺒﻘﺖ اﻟﻤﻌﺎدﻟﺔ ﻋﻠﻰ اﻟﺼﻒ‬
   ‫اﻻﺧﯿﺮ ﻓﺎﻧﮫ ﺗﺮﺟﻊ ﻣﻦ ﺟﺪﯾﺪ اي ﻣﻦ ﺑﺪاﯾﺔ اﻟﻤﺪﺧﻼت وﺗﺼﺤﯿﺢ ﻛﻞ اﻟﺤﺎﻻت وﺗﻐﯿﺮ‬
                                                      ‫اﻻوزان اﻟﻰ ان ﺗﺴﺘﻘﺮ .‬

  ‫* ﻣﻦ اﻷﻓﻀﻞ وﺿﻊ ﺟﺪول اﻟﺘﺪرﯾﺐ اﻟﺬي ﺗﻮﺿﻊ ﻓﯿﮫ اﻟﻤﺪﺧﻼت )2‪ (x1,x‬واﻟﻨﺘﯿﺠﺔ‬
   ‫اﻟﻤﻄﻠﻮﺑﺔ )‪ (T‬واﻟﻨﺘﯿﺠﺔ اﻟﺘﻲ ﺗﻢ اﻟﺤﺼﻮل ﻋﻠﯿﮭﺎ )‪ (O‬واﻷوزان اﻟﻘﺪﯾﻤﺔ ) ,‪W1old‬‬
                        ‫‪ (W2old‬واﻷوزان اﻟﺠﺪﯾﺪة ) ‪(W1new, W22new‬‬

                 ‫1‪X‬‬   ‫2‪X‬‬    ‫‪T‬‬    ‫‪O‬‬       ‫2‪W1 W2 W1 W‬‬
                                         ‫‪old old new new‬‬
                  ‫0‬    ‫0‬    ‫0‬    ‫0‬        ‫0‬   ‫0‬   ‫0‬   ‫0‬

                  ‫0‬    ‫1‬    ‫1‬

                  ‫1‬    ‫0‬    ‫1‬

                  ‫1‬    ‫1‬    ‫1‬



   ‫* اﺳﺘﻤﺮ ﺑﻌﻤﻠﯿﺔ اﻟﺘﺪرﯾﺐ ودرب اﻟﺼﻒ اﻟﺜﺎﻧﻲ )1,0( وأﻣﻸ ﺟﺪول اﻟﺘﺪرﯾﺐ ﺑﺎﻟﻘﯿﻢ‬
   ‫اﻟﺘﻲ ﺗﻈﮭﺮ ﻣﻦ ﻋﻤﻠﯿﺔ اﻟﺘﺪرﯾﺐ وﺳﺘﻼﺣﻆ ﺗﻐﯿﺮ اﻷوزان ﺑﺎﻟﺘﺪرﯾﺞ ﻣﻦ اﻻﺻﻔﺎر إﻟﻰ‬
                                                               ‫اﻟﻮاﺣﺪات .‬



                             ‫ﻣﯿﻤﻮﻧﺔ اﻟﺤﺪاد‬
               ‫اﻟﻌﺮاق – ﻛﻠﯿﺔ اﻟﺘﺮﺑﯿﺔ ﻟﻠﺒﻨﺎت – ﻗﺴﻢ اﻟﺤﺎﺳﺒﺎت‬
      ‫‪Iraq- education girls college – computer department‬‬
                    ‫‪Shrm_4fra@yahoo.com‬‬


                                     ‫9‬

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:5
posted:11/21/2011
language:Persian
pages:9