Ana içeriğe geç

Orta9 dk

Pozisyonel kodlama

Önkoşul:Multi-head attention

Kanca

“Kedi köpeği kovaladı” ile “Köpeği kedi kovaladı” — self-attention için bu iki cümle, konum bilgisi olmadan, AYNI “kelime kümesi”. Bir mekanizma bu kadar güçlüyken, kelime SIRASINI nasıl bu kadar kolay “unutabilir”?

Sezgi

Self-attention, HER token’ı diğer HER token’la karşılaştırır — ama bu karşılaştırma, token’ların dizideki SIRASINA değil, SADECE içeriklerine bakar. RNN’de sıra otomatikti (7-8. ders): bilgi soldan sağa AKARDI. Self-attention’da böyle bir akış YOK — bu yüzden konum bilgisini AYRICA eklemek gerekiyor. Aşağıda sinüzoidal kodlamanın her konum için nasıl benzersiz bir “parmak izi” ürettiğini incele:

Soldaki bir konuma (satıra) tıkla -- diğer TÜM konumlarla ne kadar "benzer" olduğunu gör:

0konum 0, boyut 0: 0.000konum 0, boyut 1: 1.000konum 0, boyut 2: 0.000konum 0, boyut 3: 1.000konum 0, boyut 4: 0.000konum 0, boyut 5: 1.000konum 0, boyut 6: 0.000konum 0, boyut 7: 1.000konum 0, boyut 8: 0.000konum 0, boyut 9: 1.000konum 0, boyut 10: 0.000konum 0, boyut 11: 1.000konum 0, boyut 12: 0.000konum 0, boyut 13: 1.000konum 0, boyut 14: 0.000konum 0, boyut 15: 1.000konum 0, boyut 16: 0.000konum 0, boyut 17: 1.000konum 0, boyut 18: 0.000konum 0, boyut 19: 1.000konum 0, boyut 20: 0.000konum 0, boyut 21: 1.000konum 0, boyut 22: 0.000konum 0, boyut 23: 1.000konum 0, boyut 24: 0.000konum 0, boyut 25: 1.000konum 0, boyut 26: 0.000konum 0, boyut 27: 1.000konum 0, boyut 28: 0.000konum 0, boyut 29: 1.000konum 0, boyut 30: 0.000konum 0, boyut 31: 1.0001konum 1, boyut 0: 0.842konum 1, boyut 1: 0.540konum 1, boyut 2: 0.533konum 1, boyut 3: 0.846konum 1, boyut 4: 0.311konum 1, boyut 5: 0.950konum 1, boyut 6: 0.177konum 1, boyut 7: 0.984konum 1, boyut 8: 0.100konum 1, boyut 9: 0.995konum 1, boyut 10: 0.056konum 1, boyut 11: 0.998konum 1, boyut 12: 0.032konum 1, boyut 13: 1.000konum 1, boyut 14: 0.018konum 1, boyut 15: 1.000konum 1, boyut 16: 0.010konum 1, boyut 17: 1.000konum 1, boyut 18: 0.006konum 1, boyut 19: 1.000konum 1, boyut 20: 0.003konum 1, boyut 21: 1.000konum 1, boyut 22: 0.002konum 1, boyut 23: 1.000konum 1, boyut 24: 0.001konum 1, boyut 25: 1.000konum 1, boyut 26: 0.001konum 1, boyut 27: 1.000konum 1, boyut 28: 0.000konum 1, boyut 29: 1.000konum 1, boyut 30: 0.000konum 1, boyut 31: 1.0002konum 2, boyut 0: 0.909konum 2, boyut 1: -0.416konum 2, boyut 2: 0.902konum 2, boyut 3: 0.431konum 2, boyut 4: 0.591konum 2, boyut 5: 0.807konum 2, boyut 6: 0.348konum 2, boyut 7: 0.937konum 2, boyut 8: 0.199konum 2, boyut 9: 0.980konum 2, boyut 10: 0.112konum 2, boyut 11: 0.994konum 2, boyut 12: 0.063konum 2, boyut 13: 0.998konum 2, boyut 14: 0.036konum 2, boyut 15: 0.999konum 2, boyut 16: 0.020konum 2, boyut 17: 1.000konum 2, boyut 18: 0.011konum 2, boyut 19: 1.000konum 2, boyut 20: 0.006konum 2, boyut 21: 1.000konum 2, boyut 22: 0.004konum 2, boyut 23: 1.000konum 2, boyut 24: 0.002konum 2, boyut 25: 1.000konum 2, boyut 26: 0.001konum 2, boyut 27: 1.000konum 2, boyut 28: 0.001konum 2, boyut 29: 1.000konum 2, boyut 30: 0.000konum 2, boyut 31: 1.0003konum 3, boyut 0: 0.141konum 3, boyut 1: -0.990konum 3, boyut 2: 0.993konum 3, boyut 3: -0.116konum 3, boyut 4: 0.813konum 3, boyut 5: 0.583konum 3, boyut 6: 0.508konum 3, boyut 7: 0.861konum 3, boyut 8: 0.295konum 3, boyut 9: 0.955konum 3, boyut 10: 0.168konum 3, boyut 11: 0.986konum 3, boyut 12: 0.095konum 3, boyut 13: 0.996konum 3, boyut 14: 0.053konum 3, boyut 15: 0.999konum 3, boyut 16: 0.030konum 3, boyut 17: 1.000konum 3, boyut 18: 0.017konum 3, boyut 19: 1.000konum 3, boyut 20: 0.009konum 3, boyut 21: 1.000konum 3, boyut 22: 0.005konum 3, boyut 23: 1.000konum 3, boyut 24: 0.003konum 3, boyut 25: 1.000konum 3, boyut 26: 0.002konum 3, boyut 27: 1.000konum 3, boyut 28: 0.001konum 3, boyut 29: 1.000konum 3, boyut 30: 0.001konum 3, boyut 31: 1.0004konum 4, boyut 0: -0.757konum 4, boyut 1: -0.654konum 4, boyut 2: 0.778konum 4, boyut 3: -0.628konum 4, boyut 4: 0.954konum 4, boyut 5: 0.301konum 4, boyut 6: 0.653konum 4, boyut 7: 0.757konum 4, boyut 8: 0.389konum 4, boyut 9: 0.921konum 4, boyut 10: 0.223konum 4, boyut 11: 0.975konum 4, boyut 12: 0.126konum 4, boyut 13: 0.992konum 4, boyut 14: 0.071konum 4, boyut 15: 0.998konum 4, boyut 16: 0.040konum 4, boyut 17: 0.999konum 4, boyut 18: 0.022konum 4, boyut 19: 1.000konum 4, boyut 20: 0.013konum 4, boyut 21: 1.000konum 4, boyut 22: 0.007konum 4, boyut 23: 1.000konum 4, boyut 24: 0.004konum 4, boyut 25: 1.000konum 4, boyut 26: 0.002konum 4, boyut 27: 1.000konum 4, boyut 28: 0.001konum 4, boyut 29: 1.000konum 4, boyut 30: 0.001konum 4, boyut 31: 1.0005konum 5, boyut 0: -0.959konum 5, boyut 1: 0.284konum 5, boyut 2: 0.324konum 5, boyut 3: -0.946konum 5, boyut 4: 1.000konum 5, boyut 5: -0.010konum 5, boyut 6: 0.776konum 5, boyut 7: 0.630konum 5, boyut 8: 0.479konum 5, boyut 9: 0.878konum 5, boyut 10: 0.278konum 5, boyut 11: 0.961konum 5, boyut 12: 0.158konum 5, boyut 13: 0.988konum 5, boyut 14: 0.089konum 5, boyut 15: 0.996konum 5, boyut 16: 0.050konum 5, boyut 17: 0.999konum 5, boyut 18: 0.028konum 5, boyut 19: 1.000konum 5, boyut 20: 0.016konum 5, boyut 21: 1.000konum 5, boyut 22: 0.009konum 5, boyut 23: 1.000konum 5, boyut 24: 0.005konum 5, boyut 25: 1.000konum 5, boyut 26: 0.003konum 5, boyut 27: 1.000konum 5, boyut 28: 0.002konum 5, boyut 29: 1.000konum 5, boyut 30: 0.001konum 5, boyut 31: 1.0006konum 6, boyut 0: -0.279konum 6, boyut 1: 0.960konum 6, boyut 2: -0.230konum 6, boyut 3: -0.973konum 6, boyut 4: 0.947konum 6, boyut 5: -0.321konum 6, boyut 6: 0.876konum 6, boyut 7: 0.483konum 6, boyut 8: 0.565konum 6, boyut 9: 0.825konum 6, boyut 10: 0.331konum 6, boyut 11: 0.944konum 6, boyut 12: 0.189konum 6, boyut 13: 0.982konum 6, boyut 14: 0.106konum 6, boyut 15: 0.994konum 6, boyut 16: 0.060konum 6, boyut 17: 0.998konum 6, boyut 18: 0.034konum 6, boyut 19: 0.999konum 6, boyut 20: 0.019konum 6, boyut 21: 1.000konum 6, boyut 22: 0.011konum 6, boyut 23: 1.000konum 6, boyut 24: 0.006konum 6, boyut 25: 1.000konum 6, boyut 26: 0.003konum 6, boyut 27: 1.000konum 6, boyut 28: 0.002konum 6, boyut 29: 1.000konum 6, boyut 30: 0.001konum 6, boyut 31: 1.0007konum 7, boyut 0: 0.657konum 7, boyut 1: 0.754konum 7, boyut 2: -0.714konum 7, boyut 3: -0.700konum 7, boyut 4: 0.800konum 7, boyut 5: -0.599konum 7, boyut 6: 0.947konum 7, boyut 7: 0.320konum 7, boyut 8: 0.644konum 7, boyut 9: 0.765konum 7, boyut 10: 0.384konum 7, boyut 11: 0.923konum 7, boyut 12: 0.220konum 7, boyut 13: 0.976konum 7, boyut 14: 0.124konum 7, boyut 15: 0.992konum 7, boyut 16: 0.070konum 7, boyut 17: 0.998konum 7, boyut 18: 0.039konum 7, boyut 19: 0.999konum 7, boyut 20: 0.022konum 7, boyut 21: 1.000konum 7, boyut 22: 0.012konum 7, boyut 23: 1.000konum 7, boyut 24: 0.007konum 7, boyut 25: 1.000konum 7, boyut 26: 0.004konum 7, boyut 27: 1.000konum 7, boyut 28: 0.002konum 7, boyut 29: 1.000konum 7, boyut 30: 0.001konum 7, boyut 31: 1.0008konum 8, boyut 0: 0.989konum 8, boyut 1: -0.145konum 8, boyut 2: -0.977konum 8, boyut 3: -0.212konum 8, boyut 4: 0.574konum 8, boyut 5: -0.819konum 8, boyut 6: 0.989konum 8, boyut 7: 0.148konum 8, boyut 8: 0.717konum 8, boyut 9: 0.697konum 8, boyut 10: 0.435konum 8, boyut 11: 0.900konum 8, boyut 12: 0.250konum 8, boyut 13: 0.968konum 8, boyut 14: 0.142konum 8, boyut 15: 0.990konum 8, boyut 16: 0.080konum 8, boyut 17: 0.997konum 8, boyut 18: 0.045konum 8, boyut 19: 0.999konum 8, boyut 20: 0.025konum 8, boyut 21: 1.000konum 8, boyut 22: 0.014konum 8, boyut 23: 1.000konum 8, boyut 24: 0.008konum 8, boyut 25: 1.000konum 8, boyut 26: 0.004konum 8, boyut 27: 1.000konum 8, boyut 28: 0.003konum 8, boyut 29: 1.000konum 8, boyut 30: 0.001konum 8, boyut 31: 1.0009konum 9, boyut 0: 0.412konum 9, boyut 1: -0.911konum 9, boyut 2: -0.940konum 9, boyut 3: 0.342konum 9, boyut 4: 0.291konum 9, boyut 5: -0.957konum 9, boyut 6: 1.000konum 9, boyut 7: -0.030konum 9, boyut 8: 0.783konum 9, boyut 9: 0.622konum 9, boyut 10: 0.485konum 9, boyut 11: 0.875konum 9, boyut 12: 0.281konum 9, boyut 13: 0.960konum 9, boyut 14: 0.159konum 9, boyut 15: 0.987konum 9, boyut 16: 0.090konum 9, boyut 17: 0.996konum 9, boyut 18: 0.051konum 9, boyut 19: 0.999konum 9, boyut 20: 0.029konum 9, boyut 21: 1.000konum 9, boyut 22: 0.016konum 9, boyut 23: 1.000konum 9, boyut 24: 0.009konum 9, boyut 25: 1.000konum 9, boyut 26: 0.005konum 9, boyut 27: 1.000konum 9, boyut 28: 0.003konum 9, boyut 29: 1.000konum 9, boyut 30: 0.002konum 9, boyut 31: 1.00010konum 10, boyut 0: -0.544konum 10, boyut 1: -0.839konum 10, boyut 2: -0.613konum 10, boyut 3: 0.790konum 10, boyut 4: -0.021konum 10, boyut 5: -1.000konum 10, boyut 6: 0.979konum 10, boyut 7: -0.206konum 10, boyut 8: 0.842konum 10, boyut 9: 0.540konum 10, boyut 10: 0.533konum 10, boyut 11: 0.846konum 10, boyut 12: 0.311konum 10, boyut 13: 0.950konum 10, boyut 14: 0.177konum 10, boyut 15: 0.984konum 10, boyut 16: 0.100konum 10, boyut 17: 0.995konum 10, boyut 18: 0.056konum 10, boyut 19: 0.998konum 10, boyut 20: 0.032konum 10, boyut 21: 1.000konum 10, boyut 22: 0.018konum 10, boyut 23: 1.000konum 10, boyut 24: 0.010konum 10, boyut 25: 1.000konum 10, boyut 26: 0.006konum 10, boyut 27: 1.000konum 10, boyut 28: 0.003konum 10, boyut 29: 1.000konum 10, boyut 30: 0.002konum 10, boyut 31: 1.00011konum 11, boyut 0: -1.000konum 11, boyut 1: 0.004konum 11, boyut 2: -0.097konum 11, boyut 3: 0.995konum 11, boyut 4: -0.331konum 11, boyut 5: -0.944konum 11, boyut 6: 0.927konum 11, boyut 7: -0.376konum 11, boyut 8: 0.891konum 11, boyut 9: 0.454konum 11, boyut 10: 0.580konum 11, boyut 11: 0.815konum 11, boyut 12: 0.341konum 11, boyut 13: 0.940konum 11, boyut 14: 0.194konum 11, boyut 15: 0.981konum 11, boyut 16: 0.110konum 11, boyut 17: 0.994konum 11, boyut 18: 0.062konum 11, boyut 19: 0.998konum 11, boyut 20: 0.035konum 11, boyut 21: 0.999konum 11, boyut 22: 0.020konum 11, boyut 23: 1.000konum 11, boyut 24: 0.011konum 11, boyut 25: 1.000konum 11, boyut 26: 0.006konum 11, boyut 27: 1.000konum 11, boyut 28: 0.004konum 11, boyut 29: 1.000konum 11, boyut 30: 0.002konum 11, boyut 31: 1.00012konum 12, boyut 0: -0.537konum 12, boyut 1: 0.844konum 12, boyut 2: 0.448konum 12, boyut 3: 0.894konum 12, boyut 4: -0.608konum 12, boyut 5: -0.794konum 12, boyut 6: 0.846konum 12, boyut 7: -0.534konum 12, boyut 8: 0.932konum 12, boyut 9: 0.362konum 12, boyut 10: 0.625konum 12, boyut 11: 0.781konum 12, boyut 12: 0.370konum 12, boyut 13: 0.929konum 12, boyut 14: 0.212konum 12, boyut 15: 0.977konum 12, boyut 16: 0.120konum 12, boyut 17: 0.993konum 12, boyut 18: 0.067konum 12, boyut 19: 0.998konum 12, boyut 20: 0.038konum 12, boyut 21: 0.999konum 12, boyut 22: 0.021konum 12, boyut 23: 1.000konum 12, boyut 24: 0.012konum 12, boyut 25: 1.000konum 12, boyut 26: 0.007konum 12, boyut 27: 1.000konum 12, boyut 28: 0.004konum 12, boyut 29: 1.000konum 12, boyut 30: 0.002konum 12, boyut 31: 1.00013konum 13, boyut 0: 0.420konum 13, boyut 1: 0.907konum 13, boyut 2: 0.856konum 13, boyut 3: 0.517konum 13, boyut 4: -0.825konum 13, boyut 5: -0.566konum 13, boyut 6: 0.738konum 13, boyut 7: -0.675konum 13, boyut 8: 0.964konum 13, boyut 9: 0.268konum 13, boyut 10: 0.668konum 13, boyut 11: 0.745konum 13, boyut 12: 0.400konum 13, boyut 13: 0.917konum 13, boyut 14: 0.229konum 13, boyut 15: 0.973konum 13, boyut 16: 0.130konum 13, boyut 17: 0.992konum 13, boyut 18: 0.073konum 13, boyut 19: 0.997konum 13, boyut 20: 0.041konum 13, boyut 21: 0.999konum 13, boyut 22: 0.023konum 13, boyut 23: 1.000konum 13, boyut 24: 0.013konum 13, boyut 25: 1.000konum 13, boyut 26: 0.007konum 13, boyut 27: 1.000konum 13, boyut 28: 0.004konum 13, boyut 29: 1.000konum 13, boyut 30: 0.002konum 13, boyut 31: 1.00014konum 14, boyut 0: 0.991konum 14, boyut 1: 0.137konum 14, boyut 2: 1.000konum 14, boyut 3: -0.019konum 14, boyut 4: -0.960konum 14, boyut 5: -0.281konum 14, boyut 6: 0.607konum 14, boyut 7: -0.795konum 14, boyut 8: 0.985konum 14, boyut 9: 0.170konum 14, boyut 10: 0.708konum 14, boyut 11: 0.706konum 14, boyut 12: 0.428konum 14, boyut 13: 0.904konum 14, boyut 14: 0.246konum 14, boyut 15: 0.969konum 14, boyut 16: 0.140konum 14, boyut 17: 0.990konum 14, boyut 18: 0.079konum 14, boyut 19: 0.997konum 14, boyut 20: 0.044konum 14, boyut 21: 0.999konum 14, boyut 22: 0.025konum 14, boyut 23: 1.000konum 14, boyut 24: 0.014konum 14, boyut 25: 1.000konum 14, boyut 26: 0.008konum 14, boyut 27: 1.000konum 14, boyut 28: 0.004konum 14, boyut 29: 1.000konum 14, boyut 30: 0.003konum 14, boyut 31: 1.00015konum 15, boyut 0: 0.650konum 15, boyut 1: -0.760konum 15, boyut 2: 0.836konum 15, boyut 3: -0.549konum 15, boyut 4: -1.000konum 15, boyut 5: 0.031konum 15, boyut 6: 0.457konum 15, boyut 7: -0.890konum 15, boyut 8: 0.998konum 15, boyut 9: 0.071konum 15, boyut 10: 0.747konum 15, boyut 11: 0.665konum 15, boyut 12: 0.457konum 15, boyut 13: 0.890konum 15, boyut 14: 0.264konum 15, boyut 15: 0.965konum 15, boyut 16: 0.149konum 15, boyut 17: 0.989konum 15, boyut 18: 0.084konum 15, boyut 19: 0.996konum 15, boyut 20: 0.047konum 15, boyut 21: 0.999konum 15, boyut 22: 0.027konum 15, boyut 23: 1.000konum 15, boyut 24: 0.015konum 15, boyut 25: 1.000konum 15, boyut 26: 0.008konum 15, boyut 27: 1.000konum 15, boyut 28: 0.005konum 15, boyut 29: 1.000konum 15, boyut 30: 0.003konum 15, boyut 31: 1.00016konum 16, boyut 0: -0.288konum 16, boyut 1: -0.958konum 16, boyut 2: 0.414konum 16, boyut 3: -0.910konum 16, boyut 4: -0.940konum 16, boyut 5: 0.340konum 16, boyut 6: 0.292konum 16, boyut 7: -0.956konum 16, boyut 8: 1.000konum 16, boyut 9: -0.029konum 16, boyut 10: 0.783konum 16, boyut 11: 0.622konum 16, boyut 12: 0.485konum 16, boyut 13: 0.875konum 16, boyut 14: 0.281konum 16, boyut 15: 0.960konum 16, boyut 16: 0.159konum 16, boyut 17: 0.987konum 16, boyut 18: 0.090konum 16, boyut 19: 0.996konum 16, boyut 20: 0.051konum 16, boyut 21: 0.999konum 16, boyut 22: 0.028konum 16, boyut 23: 1.000konum 16, boyut 24: 0.016konum 16, boyut 25: 1.000konum 16, boyut 26: 0.009konum 16, boyut 27: 1.000konum 16, boyut 28: 0.005konum 16, boyut 29: 1.000konum 16, boyut 30: 0.003konum 16, boyut 31: 1.00017konum 17, boyut 0: -0.961konum 17, boyut 1: -0.275konum 17, boyut 2: -0.135konum 17, boyut 3: -0.991konum 17, boyut 4: -0.788konum 17, boyut 5: 0.616konum 17, boyut 6: 0.118konum 17, boyut 7: -0.993konum 17, boyut 8: 0.992konum 17, boyut 9: -0.129konum 17, boyut 10: 0.817konum 17, boyut 11: 0.577konum 17, boyut 12: 0.512konum 17, boyut 13: 0.859konum 17, boyut 14: 0.298konum 17, boyut 15: 0.955konum 17, boyut 16: 0.169konum 17, boyut 17: 0.986konum 17, boyut 18: 0.096konum 17, boyut 19: 0.995konum 17, boyut 20: 0.054konum 17, boyut 21: 0.999konum 17, boyut 22: 0.030konum 17, boyut 23: 1.000konum 17, boyut 24: 0.017konum 17, boyut 25: 1.000konum 17, boyut 26: 0.010konum 17, boyut 27: 1.000konum 17, boyut 28: 0.005konum 17, boyut 29: 1.000konum 17, boyut 30: 0.003konum 17, boyut 31: 1.00018konum 18, boyut 0: -0.751konum 18, boyut 1: 0.660konum 18, boyut 2: -0.642konum 18, boyut 3: -0.766konum 18, boyut 4: -0.557konum 18, boyut 5: 0.830konum 18, boyut 6: -0.059konum 18, boyut 7: -0.998konum 18, boyut 8: 0.974konum 18, boyut 9: -0.227konum 18, boyut 10: 0.848konum 18, boyut 11: 0.530konum 18, boyut 12: 0.539konum 18, boyut 13: 0.842konum 18, boyut 14: 0.315konum 18, boyut 15: 0.949konum 18, boyut 16: 0.179konum 18, boyut 17: 0.984konum 18, boyut 18: 0.101konum 18, boyut 19: 0.995konum 18, boyut 20: 0.057konum 18, boyut 21: 0.998konum 18, boyut 22: 0.032konum 18, boyut 23: 1.000konum 18, boyut 24: 0.018konum 18, boyut 25: 1.000konum 18, boyut 26: 0.010konum 18, boyut 27: 1.000konum 18, boyut 28: 0.006konum 18, boyut 29: 1.000konum 18, boyut 30: 0.003konum 18, boyut 31: 1.00019konum 19, boyut 0: 0.150konum 19, boyut 1: 0.989konum 19, boyut 2: -0.952konum 19, boyut 3: -0.306konum 19, boyut 4: -0.271konum 19, boyut 5: 0.963konum 19, boyut 6: -0.235konum 19, boyut 7: -0.972konum 19, boyut 8: 0.946konum 19, boyut 9: -0.323konum 19, boyut 10: 0.876konum 19, boyut 11: 0.481konum 19, boyut 12: 0.565konum 19, boyut 13: 0.825konum 19, boyut 14: 0.332konum 19, boyut 15: 0.944konum 19, boyut 16: 0.189konum 19, boyut 17: 0.982konum 19, boyut 18: 0.107konum 19, boyut 19: 0.994konum 19, boyut 20: 0.060konum 19, boyut 21: 0.998konum 19, boyut 22: 0.034konum 19, boyut 23: 0.999konum 19, boyut 24: 0.019konum 19, boyut 25: 1.000konum 19, boyut 26: 0.011konum 19, boyut 27: 1.000konum 19, boyut 28: 0.006konum 19, boyut 29: 1.000konum 19, boyut 30: 0.003konum 19, boyut 31: 1.00020konum 20, boyut 0: 0.913konum 20, boyut 1: 0.408konum 20, boyut 2: -0.969konum 20, boyut 3: 0.249konum 20, boyut 4: 0.041konum 20, boyut 5: 0.999konum 20, boyut 6: -0.403konum 20, boyut 7: -0.915konum 20, boyut 8: 0.909konum 20, boyut 9: -0.416konum 20, boyut 10: 0.902konum 20, boyut 11: 0.431konum 20, boyut 12: 0.591konum 20, boyut 13: 0.807konum 20, boyut 14: 0.348konum 20, boyut 15: 0.937konum 20, boyut 16: 0.199konum 20, boyut 17: 0.980konum 20, boyut 18: 0.112konum 20, boyut 19: 0.994konum 20, boyut 20: 0.063konum 20, boyut 21: 0.998konum 20, boyut 22: 0.036konum 20, boyut 23: 0.999konum 20, boyut 24: 0.020konum 20, boyut 25: 1.000konum 20, boyut 26: 0.011konum 20, boyut 27: 1.000konum 20, boyut 28: 0.006konum 20, boyut 29: 1.000konum 20, boyut 30: 0.004konum 20, boyut 31: 1.00021konum 21, boyut 0: 0.837konum 21, boyut 1: -0.548konum 21, boyut 2: -0.687konum 21, boyut 3: 0.727konum 21, boyut 4: 0.350konum 21, boyut 5: 0.937konum 21, boyut 6: -0.559konum 21, boyut 7: -0.829konum 21, boyut 8: 0.863konum 21, boyut 9: -0.505konum 21, boyut 10: 0.925konum 21, boyut 11: 0.380konum 21, boyut 12: 0.616konum 21, boyut 13: 0.787konum 21, boyut 14: 0.365konum 21, boyut 15: 0.931konum 21, boyut 16: 0.208konum 21, boyut 17: 0.978konum 21, boyut 18: 0.118konum 21, boyut 19: 0.993konum 21, boyut 20: 0.066konum 21, boyut 21: 0.998konum 21, boyut 22: 0.037konum 21, boyut 23: 0.999konum 21, boyut 24: 0.021konum 21, boyut 25: 1.000konum 21, boyut 26: 0.012konum 21, boyut 27: 1.000konum 21, boyut 28: 0.007konum 21, boyut 29: 1.000konum 21, boyut 30: 0.004konum 21, boyut 31: 1.00022konum 22, boyut 0: -0.009konum 22, boyut 1: -1.000konum 22, boyut 2: -0.194konum 22, boyut 3: 0.981konum 22, boyut 4: 0.624konum 22, boyut 5: 0.781konum 22, boyut 6: -0.697konum 22, boyut 7: -0.718konum 22, boyut 8: 0.808konum 22, boyut 9: -0.589konum 22, boyut 10: 0.945konum 22, boyut 11: 0.328konum 22, boyut 12: 0.641konum 22, boyut 13: 0.768konum 22, boyut 14: 0.381konum 22, boyut 15: 0.924konum 22, boyut 16: 0.218konum 22, boyut 17: 0.976konum 22, boyut 18: 0.123konum 22, boyut 19: 0.992konum 22, boyut 20: 0.070konum 22, boyut 21: 0.998konum 22, boyut 22: 0.039konum 22, boyut 23: 0.999konum 22, boyut 24: 0.022konum 22, boyut 25: 1.000konum 22, boyut 26: 0.012konum 22, boyut 27: 1.000konum 22, boyut 28: 0.007konum 22, boyut 29: 1.000konum 22, boyut 30: 0.004konum 22, boyut 31: 1.00023konum 23, boyut 0: -0.846konum 23, boyut 1: -0.533konum 23, boyut 2: 0.359konum 23, boyut 3: 0.933konum 23, boyut 4: 0.836konum 23, boyut 5: 0.549konum 23, boyut 6: -0.813konum 23, boyut 7: -0.583konum 23, boyut 8: 0.746konum 23, boyut 9: -0.666konum 23, boyut 10: 0.962konum 23, boyut 11: 0.274konum 23, boyut 12: 0.665konum 23, boyut 13: 0.747konum 23, boyut 14: 0.398konum 23, boyut 15: 0.917konum 23, boyut 16: 0.228konum 23, boyut 17: 0.974konum 23, boyut 18: 0.129konum 23, boyut 19: 0.992konum 23, boyut 20: 0.073konum 23, boyut 21: 0.997konum 23, boyut 22: 0.041konum 23, boyut 23: 0.999konum 23, boyut 24: 0.023konum 23, boyut 25: 1.000konum 23, boyut 26: 0.013konum 23, boyut 27: 1.000konum 23, boyut 28: 0.007konum 23, boyut 29: 1.000konum 23, boyut 30: 0.004konum 23, boyut 31: 1.000

Bir konuma tıkla, göreli benzerliği gör.

İpucu: yakın konumların çubukları uzun, uzak konumlarınki kısa olacak.

Mekanizma

Önce sorunu SAYILARLA kanıtlayalım: token’ları karıştırıp geri sıralarsak, çıktı DEĞİŞMELİ MİYDİ?

Self-attention, sırayı görmüyor

# Self-attention'ın GİZLİ bir sorunu var: KONUM (position) kavramı YOK. Bir kelimenin
# cümledeki 1. mi, yoksa 5. mi olduğunu BİLMİYOR -- sadece kelimelerin BİRBİRİYLE
# benzerliğine bakıyor. Bunu KANITLAYALIM: token'ları KARIŞTIRIP (permute) AYNI
# hesaplamayı tekrarlayalım.
N, D = 5, 8
X = torch.randn(N, D)
Wq, Wk, Wv = torch.randn(D, D) * 0.5, torch.randn(D, D) * 0.5, torch.randn(D, D) * 0.5

def calistir(X_girdi):
    Q, K, V = X_girdi @ Wq, X_girdi @ Wk, X_girdi @ Wv
    return dikkat(Q, K, V)

cikti_orijinal, _ = calistir(X)

permutasyon = torch.tensor([2, 0, 4, 1, 3])
X_karisik = X[permutasyon]
cikti_karisik, _ = calistir(X_karisik)

# Karışık çıktıyı AYNI permütasyonla geri "düzeltirsek", orijinalle AYNI mı olmalı?
cikti_karisik_geri = torch.zeros_like(cikti_karisik)
cikti_karisik_geri[permutasyon] = cikti_karisik

fark = (cikti_orijinal - cikti_karisik_geri).abs().max().item()
print(f"Token sırası KARIŞTIRILDI (permütasyon: {permutasyon.tolist()}), sonra çıktı GERİ sıralandı.")
print(f"Orijinal çıktı ile karıştırılıp-geri-sıralanan çıktı arasındaki fark: {fark:.2e}")
print(f"torch.allclose: {torch.allclose(cikti_orijinal, cikti_karisik_geri, atol=1e-6)}")
print("\nSonuç: self-attention, token'ların SIRASINI 'görmüyor' -- SADECE hangi token'ların")
print("VAR olduğunu görüyor. 'Kedi köpeği kovaladı' ile 'Köpeği kedi kovaladı', konum bilgisi")
print("OLMADAN, attention için AYNI 'küme'dir.")
Token sırası KARIŞTIRILDI (permütasyon: [2, 0, 4, 1, 3]), sonra çıktı GERİ sıralandı.
Orijinal çıktı ile karıştırılıp-geri-sıralanan çıktı arasındaki fark: 2.38e-07
torch.allclose: True

Sonuç: self-attention, token'ların SIRASINI 'görmüyor' -- SADECE hangi token'ların
VAR olduğunu görüyor. 'Kedi köpeği kovaladı' ile 'Köpeği kedi kovaladı', konum bilgisi
OLMADAN, attention için AYNI 'küme'dir.

Fark 2.38e-07 — pratikte SIFIR. Token’ları karıştırıp geri sıralamak, hesaplamayı HİÇ etkilemiyor. Şimdi çözümü kuralım:

Sinüzoidal pozisyonel kodlama

# Çözüm: her konuma (position) ÖZEL, SABİT bir vektör ekle -- "Attention is All You
# Need" makalesinin sinüzoidal kodlaması:
def pozisyonel_kodlama(uzunluk, boyut):
    pe = torch.zeros(uzunluk, boyut)
    pozisyon = torch.arange(uzunluk).unsqueeze(1).float()
    bolen = torch.exp(torch.arange(0, boyut, 2).float() * (-math.log(10000.0) / boyut))
    pe[:, 0::2] = torch.sin(pozisyon * bolen)
    pe[:, 1::2] = torch.cos(pozisyon * bolen)
    return pe

PE = pozisyonel_kodlama(N, D)
print(f"\nPozisyonel kodlama şekli: {tuple(PE.shape)}")
print(f"Konum 0'ın kodlaması: {[round(v,3) for v in PE[0].tolist()]}")
print(f"Konum 1'in kodlaması: {[round(v,3) for v in PE[1].tolist()]}")
print("Konum 0'ın kodlaması hep [0, 1, 0, 1, ...] ile başlar (sin(0)=0, cos(0)=1) -- SABİT bir başlangıç noktası.")

Pozisyonel kodlama şekli: (5, 8)
Konum 0'ın kodlaması: [0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0]
Konum 1'in kodlaması: [0.841, 0.54, 0.1, 0.995, 0.01, 1.0, 0.001, 1.0]
Konum 0'ın kodlaması hep [0, 1, 0, 1, ...] ile başlar (sin(0)=0, cos(0)=1) -- SABİT bir başlangıç noktası.

PE eklenince, sıra artık önemli

# Şimdi X'e PE'yi EKLEYİP AYNI karıştırma testini tekrarlayalım.
X_pozisyonlu = X + PE

def calistir_pozisyonlu(X_girdi, PE_girdi):
    X_toplam = X_girdi + PE_girdi
    Q, K, V = X_toplam @ Wq, X_toplam @ Wk, X_toplam @ Wv
    return dikkat(Q, K, V)

cikti_poz_orijinal, _ = calistir_pozisyonlu(X, PE)
# DİKKAT: X karıştırılıyor ama PE karıştırılmıyor -- pozisyonlar SABİT kalıyor,
# çünkü PE 'bu token 3. sırada' der, token'ın KENDİSİYLE değil.
cikti_poz_karisik, _ = calistir_pozisyonlu(X_karisik, PE)
cikti_poz_karisik_geri = torch.zeros_like(cikti_poz_karisik)
cikti_poz_karisik_geri[permutasyon] = cikti_poz_karisik

fark_poz = (cikti_poz_orijinal - cikti_poz_karisik_geri).abs().max().item()
print(f"\nPE EKLENDİKTEN sonra, AYNI karıştır-geri-sırala testi -- fark: {fark_poz:.4f}")
print(f"torch.allclose: {torch.allclose(cikti_poz_orijinal, cikti_poz_karisik_geri, atol=1e-6)}")
print("ARTIK eşleşmiyor! PE eklenince, HANGİ token'ın HANGİ konumda olduğu SONUCU değiştiriyor --")
print("self-attention artık 'sırasız bir küme' değil, 'sıralı bir dizi' işliyor.")

PE EKLENDİKTEN sonra, AYNI karıştır-geri-sırala testi -- fark: 1.4039
torch.allclose: False
ARTIK eşleşmiyor! PE eklenince, HANGİ token'ın HANGİ konumda olduğu SONUCU değiştiriyor --
self-attention artık 'sırasız bir küme' değil, 'sıralı bir dizi' işliyor.

Fark 1.40’a çıktı — artık token’ları karıştırıp geri sıralamak SONUCU DEĞİŞTİRİYOR, çünkü her token’a “ben kaçıncı sıradayım” bilgisi eklendi.

Matematik

Sinüzoidal pozisyonel kodlama
PE(pos,2i)=sin(pos100002i/d)PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right)PE(pos,2i+1)=cos(pos100002i/d)PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right)
SembolAnlamı
posposToken’ın dizideki konumu (0, 1, 2, …)
iiBoyut çiftinin indeksi (her ii için bir sin, bir cos boyutu)
ddGömme boyutu

Bu formül İKİ nedenle seçildi: (1) HER konum için BENZERSİZ bir vektör üretir, (2) YAKIN konumların vektörleri birbirine BENZER, UZAK konumlarınki FARKLI — yani model göreli mesafeyi “hissedebilir”. ÖĞRENİLEN bir kodlama yerine SABİT bir formül kullanılması, modelin eğitimde GÖRMEDİĞİ uzunluktaki dizilere de (sınırlı ölçüde) genelleyebilmesini sağlar.

Kod

Bu “yakın = benzer, uzak = farklı” özelliğini doğrudan ölçelim:

Kosinüs benzerliği, mesafeyle azalıyor

# PE vektörlerinin bir başka özelliği: YAKIN konumların kodlamaları birbirine BENZER,
# UZAK konumların kodlamaları FARKLI -- göreli konum bilgisini TAŞIYOR.
# Gerçekçi bir boyutla (gerçek Transformer'lar d_model=512-768 kullanır, biz 64 ile
# gösteriyoruz) bu ilişki çok daha PÜRÜZSÜZ görünür:
D_BUYUK = 64
PE_uzun = pozisyonel_kodlama(30, D_BUYUK)
referans = PE_uzun[5]
print(f"\nKonum 5'in kodlamasıyla diğer konumların kosinüs benzerliği (boyut={D_BUYUK}):")
for hedef in [4, 6, 10, 15, 20]:
    benzerlik = F.cosine_similarity(referans, PE_uzun[hedef], dim=0).item()
    uzaklik = abs(hedef - 5)
    print(f"  konum {hedef:<3} (uzaklık={uzaklik:<2}) benzerlik={benzerlik:.3f}")
print("\nUzaklık arttıkça benzerlik DÜZENLİ biçimde azalıyor -- model, 'bu iki kelime YAKIN' ile")
print("'bu iki kelime UZAK' arasındaki farkı, kodlamaların GEOMETRİSİNDEN çıkarabilir.")
print("(Not: sinüzoidal kodlama PERİYODİK olduğu için ÇOK büyük uzaklıklarda bu azalış")
print("tekrar dalgalanabilir -- ama modelin göreceği tipik dizi uzunluklarında sorun değildir.)")

Konum 5'in kodlamasıyla diğer konumların kosinüs benzerliği (boyut=64):
  konum 4   (uzaklık=1 ) benzerlik=0.966
  konum 6   (uzaklık=1 ) benzerlik=0.966
  konum 10  (uzaklık=5 ) benzerlik=0.734
  konum 15  (uzaklık=10) benzerlik=0.658
  konum 20  (uzaklık=15) benzerlik=0.608

Uzaklık arttıkça benzerlik DÜZENLİ biçimde azalıyor -- model, 'bu iki kelime YAKIN' ile
'bu iki kelime UZAK' arasındaki farkı, kodlamaların GEOMETRİSİNDEN çıkarabilir.
(Not: sinüzoidal kodlama PERİYODİK olduğu için ÇOK büyük uzaklıklarda bu azalış
tekrar dalgalanabilir -- ama modelin göreceği tipik dizi uzunluklarında sorun değildir.)
50 konum x 64 boyutluk sinüzoidal pozisyonel kodlama ısı haritası; yatayda konum, düşeyde boyut, renkler dalga deseninde değişiyor.
Her konum (yatay eksen), tüm boyutlar (düşey eksen) boyunca benzersiz bir sinüs/kosinüs 'parmak izi' taşıyor -- yukarıdaki interaktif bileşende aynı deseni inceleyebilirsin.

Nerede işe yarar

Pozisyonel kodlama, “Attention is All You Need” makalesinin (18. ders) ele aldığı SON parça:

  • Bu kodlama, gömmeye TOPLANIR (concat değil, +) — yani Xgerc\cek=Xkelime+PEkonumX_{gerçek} = X_{kelime} + PE_{konum}; model, ikisinin KARIŞIMINDAN hem “ne” hem “nerede” bilgisini ÇIKARMAYI öğrenir.
  • GPT gibi modern modeller genelde ÖĞRENİLEN pozisyonel kodlama kullanır (sabit formül yerine, her konum için bir embedding vektörü EĞİTİLİR) — daha esnek ama eğitimde görülmeyen uzunluklara genellemez.
  • RoPE (Rotary Positional Embedding) gibi daha yeni yöntemler (LLaMA, çoğu modern LLM), konumu Q ve K’ya TOPLAMA yerine DÖNDÜRME (rotation) ile ekler — bu dersin kapsamı dışında ama AYNI temel sorunu (sıra bilgisi) çözer.

Bu 2 hatayı yaparsın:

  1. Pozisyonel kodlamayı “isteğe bağlı bir iyileştirme” sanmak — HAYIR, ONSUZ self-attention kelime SIRASINI hiç göremez; bu OPSİYONEL değil, ZORUNLUDUR.
  2. Sinüzoidal kodlamanın MUTLAK konumu (kelime tam olarak kaçıncı sırada) kodladığını, göreli konumu (iki kelime birbirine ne kadar YAKIN) kodlamadığını düşünmek — aslında HER İKİSİNİ de, farklı derecelerde taşır (bu dersteki benzerlik-mesafe deneyi göreli tarafı gösteriyor).

Kendini test et

1. Notebook'ta token'ları karıştırıp geri sıralamak, PE EKLENMEDEN önce çıktıyı DEĞİŞTİRMEZKEN (fark 2.38e-07), PE EKLENDİKTEN sonra DEĞİŞTİRİYOR (fark 1.40). Bu NEYİ kanıtlıyor?
  1. PE eklenmesi bir hata kaynağıdır
  2. Self-attention'ın kendisi token SIRASINA duyarsızdır (permütasyon değişmez); PE, her token'a 'ben kaçıncı sıradayım' bilgisini ekleyerek modelin SIRAYI ayırt etmesini SAĞLAR (doğru cevap)
  3. İki test de aynı sonucu vermeliydi
  4. Bu sadece küçük modellerde görülen bir durumdur

Neden: sirasizlik-kanit bloğunda fark pratikte sıfırken (2.38e-07), kodlama-eklenince bloğunda fark 1.40'a çıkıyor -- bu, PE'nin TAM OLARAK çözmesi gereken sorunu (konum körlüğü) çözdüğünü kanıtlıyor.

2. Sinüzoidal pozisyonel kodlama formülünde neden SIN ve COS'un İKİSİ BİRDEN kullanılır, tek bir fonksiyon değil?
  1. Rastgele bir tercih, önemi yok
  2. Her boyut çiftinde (sin, cos) farklı frekanslarla, her konum için BENZERSİZ bir vektör üretmek VE yakın konumların vektörlerinin birbirine benzer kalmasını sağlamak için (doğru cevap)
  3. Hesaplama hızını artırmak için
  4. Sadece negatif değerlerden kaçınmak için

Neden: MathBox'ta görüldüğü gibi her i için bir sin bir cos boyutu üretiliyor; bu, uzaklik-ile-benzerlik bloğunda gösterilen 'yakın konumlar benzer, uzak konumlar farklı' özelliğini SAĞLAYAN matematiksel yapı.

3. 'Kedi köpeği kovaladı' ile 'Köpeği kedi kovaladı' örneği, pozisyonel kodlama OLMADAN self-attention için NEDEN aynı 'küme'?
  1. Bu iki cümle Türkçede aynı anlama gelir
  2. Self-attention token'ların HANGİ SIRADA olduğunu değil, SADECE hangi token'ların VAR olduğunu ve birbirleriyle ne kadar BENZER olduğunu görür -- konum bilgisi olmadan iki farklı sıralama aynı hesaplamayı üretir (doğru cevap)
  3. Attention mekanizması Türkçe dilbilgisini anlamaz
  4. Bu örnekte kelimeler yanlış seçilmiştir

Neden: sirasizlik-kanit bloğu TAM OLARAK bunu gösteriyor: aynı token kümesinin FARKLI sıralamaları, permütasyonu geri aldığınızda İDENTİK çıktı üretiyor -- self-attention'ın sıraya duyarsız (permütasyon değişmez) olduğunun kanıtı.

Özet

Özet

  • Self-attention, token'ların SIRASINA değil, SADECE içeriklerine bakar -- permütasyon DEĞİŞMEZDİR (kanıt: karıştır-geri-sırala testi, fark ~0).
  • Sinüzoidal pozisyonel kodlama, her konuma SABİT, BENZERSİZ bir vektör atar ve gömmeye TOPLANIR.
  • PE eklendikten sonra, token sırası SONUCU DEĞİŞTİRİR (kanıt: aynı test, fark 1.40).
  • PE vektörleri arasındaki kosinüs benzerliği, konumlar arasındaki UZAKLIKLA (genelde) AZALIR -- göreli konum bilgisi taşır.
  • Gerçek modern modeller (GPT, LLaMA) genelde ÖĞRENİLEN veya döndürme-tabanlı (RoPE) kodlama kullanır -- AYNI temel sorunu farklı şekilde çözerler.
Sonraki adım: Layer norm ve artık bağlantılar →