Veri Sıkıştırma’da Devrim

Yollayan : SSG @ Şub 7th, 2010 Kategori : MANŞET, TEKNOLOJİ. Bu asparagaz ile ilgili herhangi bir gelismeyi takip edebilirsin RSS 2.0. Dilersen pingback birakabilirsin

1949′da 3 saat calışan Eniac`tan beri günümüze kadar gelen en büyük muammalardan biri olan compression konusunun RLE`den kombine LZW+Shannon_fano metodlarına kadar binbir değişik şekli denenmesine rağmen hala internetten megabyte`larca dosya indirmek zorunda kalmamız teknolojinin sıkıştırma teknolojisinde geri kaldığını göstermez mi?

Gösterir… Gösterirdi demeliyiz belki de… Çünkü 93′te başladığım compression teknikleri çalışmalarımın meyvesini son bir kaç gündür almaktayım ve Allah izin verir de bir kaç hafta daha kod üzerinde calışabilirsem “dünyanın en güzel compression programı”nı release edeceğim.

Program tamamen benim bulduğum “huffman-supplied predictive backpropagated neural networked data regeneration” yöntemiyle calışmaktadır. Algoritmanın compression kısmı çok basit ve look&feel olmakla birlikte, decompression oldukca yavaş ve zahmetli olmaktadır. 1993`te compression algoritmasini keşfetmiş fakat bu kadar yıldır decompression üzerinde düsünmekte idim. Netekim onun da yolunu buldum işte açıklamaları buradadır.

COMPRESSION

Compression tam olarak sıkıştırılacak bilginin içeriğini yeterince iyi betimleyen bir cümledir. Cümle herhangi bir dilde olabilir. Pseudo hatta alakasız random bişii bile olabilir. Çünkü decompression algoritması “dynamic-learning” tabanlı bir AI sistemi olduğundan sizin kafadan uyduracağınız herhangi bir dili bile gerekli zaman verildiğinde öğrenecektir.

Örnek bir compression:

Input data:
1,538,456 megabyte`lik homesite3.exe

Output:
phase 1:
HOMESITE3GUZELBIRHTMLEDITORGEREKLIINFOWWW.ALLAIRE.COM`DAWAROLMADIVISUALCILEYAZILIRBAsTAN

phase 2: (Sıkıştırılan dataya extradan huffman uygulanır)
“!@sIEGSDFG(#K” (12 byte)

Gördüğünüz gibi compression hemen hemen on binde bir gibi bir ratio`ya ulaşmaktadır. Sıkıştırmanın bu kadar mükemmel olmasI tabi ki decompression algoritmasının oturduğu sağlam temele dayanıyor.

DECOMPRESSION
Algoritmanın en karmaşık kısmı budur. Çalışması sürekli “en iyilemeye” dayanan bir neural network analyzer`dan oluşur.

phase 1: Huffman string decode edilir.
phase 2:Neural network engine calışmaya başlar. Engine datayı sürekli baştan okuyup anlamaya çalışır. Anlamadığı sürece bir daha datayı analiz eder. Her okuduğunda anladığı kısmı kadar bir fitness point verir. En yüksek fitness point`e ulaştığında “hah ben bunu anladım” der ve çözümleme aşamasına geçer.
phase 3:Çözümleme aşamasında neural network önce binary datanın nasıl generate edileceğini öğrenir. Bunu sürekli kendine “nasıl generate ederim?” sorusunu sorarak yapar ve her seferinde random bir cevap üretir. Fitness pointi en yüksek olan cevap en feasible cevaptır, böylece datayı nasıl regenerate edeceğini öğrenir. Kalan zamanda datayı regenerate eder.
phase 4: (rengeneration)Neural network kendisine verilen datayı tekrar nasıl regenerate edeceğine dair bir ruleset oluşturmuştur. Bu ruleset`lerle bir loop`a girer ve rule`ları sürekli test eder. Bu arada random input datası vererek rule`larla onlara şekil verir. Uzun bir süre sonunda ; (genelde input datasının boyu=x, orijinal data boyu = y dersek y^x kadar bir zamanda)

Örnek bir decompression

Phase 1:
Az onceki sıkıştırdığımız datayı decompress edelim…
“!@sIEGSDFG(#K” (12 byte)
Huffman engine datayı decompress ediyor:
“HOMESITE3GUZELBIRHTMLEDITORGEREKLIINFOWWW.ALLAIRE.COM`DAWAROLMADIVISUALCILEYAZILIRBAsTAN”

phase 2:
Neural network engine datayı baştan aşağı analiz eder. Bu aşama en uzun sürenaşamalardan biridir. ılk bir kaç adımı şöyledir:

Getnextbyte `H`
Neural engine: “bir anlamı yok. yoksa helikopter? yok yok.”
Getnextbyte `O`
Neural engine: `hö? ne ola ki? homo? gay picture mi? neyse next byte`i alayım`
Getnextbyte `M`
Neural engine: `aha kesin homo resmi.. Ben ikinci şread`de generate etmeye başliim`
Getnextbyte `E`
Neural engine: `hassiktir. home? ev resmi? Thread de boşuna gitti.”
Getnextbyte `S`
Neural engine: `ulan bişey anladıysam anamı miksinler. homes ne bee!”

bu döngü oldukca uzun sürer ve engine datanın ne olduğunu anlayana kadar devam eder.

phase 3: Resolution
neural network data`nın ne olduğunu aşağıdaki ruleset`ler şeklinde hafızasında tutmaktadır:
+ “Bu bir yazılımdır”
+ “İsmi homesite`tir version`u 3.0`dır”
+ “HTML editör`dür. Oldukça gelişmiştir”
+ “Yazan firma Allaire software`dir”
+ “Win32 PE executable`dir”
+ “Visual C++ ile yazılmıştır”
+ “PCWorld “editor`s choice” ödülünü almıştır”
+ “Tek programcı yazmıştır ismi Aldrin Hughes`dur”
+ “E-mail`ı aldrin@allaire.com`dur.”
+ “Aldrin`in ev telefonu +1 813 954 3476`dır”

(not: Neural network engine`in bu kadar data bulmasının sebebi sırf program hakkında info bulacam diye fake nickle IRC`ye girip millete sormasıdır. Çünkü neural networke program hakkında bilgi bulması için hic sınır verilmemiştir. Dolayısıyla elinden gelen her yolu denemekte, IRC`ye girmekte, ICQ database`ini search etmekte, mailing listlere üye olmaktadır. Hatta sahte kredi kartıylaadult site`lara üye olup arada kafasını da dinlendirmektedir)

Engine bu dataları alıp kendine bir “regeneration” algoritma listesi çıkartır. Bu listede bu datanın regenerate edilebileceği yöntemler ve bunların biribirine göre kıyaslaması yer almaktadır:

1. Programın yazıldığı Visual C++ dili ile programın baştan source`u oluşturulup Visual C++ ile compile edilir. (Yavaş, birebir orijinal data elde edilmesi uzun sürüyor. Eğer sistemde Visual C++ yoksa, engine`in bir de Visual C++ generate etmesi gerekiyor ki bu algoritmayi iyice yavaşlatıyor) (Puan: 4)

1b. Mantık 1. algoritma ile aynıdır fakat sıfırdan regeneration yerine Aldrin Hughes`e mail atılıp source`lar istenir. Eğer gelirse direk VisualC++ ile compile edilir. (Puan: 4.5)

1c. Engine, ödülü kriter olarak alır ve sıfırdan bambaşka bir program yazıp (bu mesela, bir mail client olabilir), pcworld editor`s choice ödülünü alan bir program yazar. (Yavaş ve orijinal data elde edilmiyor) (Puan:3)

2. 1,538,456 byte uzunluğunda olabilecek tüm Win32 PE EXE kombinasyonları denenir ve üretilen data tekrar sıkıştırılıp orijinal data ile tutarlılık hesaplanır. (Data size`ina göre exponential olarak decompression time uzamaktadır. Ufak boylu data`larda etkin olabilir. Yine de orijinal datanın birebir elde edilmesi daha kolay) (Puan:5)

2b. Direk kombinasyon denemek yerine genetik algoritma kullanılarak “random`dan en iyiye ergi” metodu kullanılır. Slicing gibi performans artırıcı algoritmalar da eklenirse 2. algoritmanın oldukca hızlı bir hali elde edilmiş olur. (Puan: 7)

3. Engine, akıllılık edip ftp.allaire.com`dan homesite3.exe`yi download eder. (Puan:10)

phase 4: regeneration

Engine, en yüksek fitness pointli algoritmayı seçtikten sonra onun uygulamasına geçer. Analyze safhasındaki döngüyle aynı mantığa dayalı bu döngünde data yavaş yavaş baştan oluşturulur. Seçilen algoritmanın etkinliğine göre süresi degişken bir safhadır.

Algoritma sonunda eğer bire bir orijinal data elde edilmezse neural engine`i hafifçe dövünüz. Biz neural network`u erkeğin kaburga kemiğinden yarattık ona balçıkla yaşam verdik. şüphesiz ki neural network`unu inançsızlardan korumayanlar için cehennemde büyük azap vardır.

(Not: Araştırmacı Yazarımız SSG, bu yazıyı önce TDSN magazini için yazmış sonradan kendilerinin izniyle Asparagaz`a vermiştir. Lütfen o dergiyi de okuyun. Destekleyin. (http://artemis.efes.net.tr/cash)

2 cevap “Veri Sıkıştırma’da Devrim”

  1. Hikmet diyor ki:

    Kardesim senin algoritma da fena degil. Kasarak da olsa bayagi uzun yazmissin, olaya profesyonel bi hava katmissin. Lakin 10bindebir ne ki? 93-94 falan gibiyken bizom arkadasin birinin yazdigi kod ne kadar buyuk dosya olursa olsun 1 byte’a kadar compress ediyordu ama tabii problem sonra geri acamiyordu o iste. Onu da artik senin teknikle decompress etsin.

  2. Ozan diyor ki:

    acaba bu algoritma paralel çalışır mı? 64 bit işlemci uyumu nedir?

Yorum birak

Additional comments powered by BackType


Giriş
Bu sitede yazanlar hayal ürünüdür. Gerçek olduğuna inanıp da suç işleyen, makinasını formatlayan, bileğini kesen maldır. Hiçbir sorumluluk kabul etmeyiz.
Bu arada site halen hazirlanmaktadir. Eski içerikler aktif hale getirilmekte ve site üzerinde çalismalar devam etmektedir.
Alt Yapi: Wordpress