Öncelikle okumadıysanız önceki yazılarımı okumanızı tavsiye ederim.
Ve tabii olmazsa olmaz, kutsal kaynak, hala yararlanıyorum:

3. sınıfta bir tane projeli yazılım geliştirme bir tane de elektronik dersi (sinyal) aldım. (Birçok arkadaşım sadece bir bilgisayar dersi almama şaşırdılar.) Fakat ikinci dönem exchange'e gidip 5 tane teknik dersi dayadım. Ödevler projeler. Şimdi de ise Koç'ta araştırma asistanıyım. Dolayısıyla biraz bilgim var artık bu konularda.

"Bilgisayar Mühendisliğine Ne Kadar Hazırsın?"  yazısında anlatmaya çalıştığım 2 madde vardı:

1- İşinizi sevecekseniz gelin. Dolayısıyla bölümü okumayı sevecekseniz gelin.

2- Öğrenmeyi sevecekseniz gelin. Bir ömür boyunca google taraması yapmayı, araştırmayı göze alacaksanız gelin.

Fakat "Bilgisayar Mühendisini bilgisayar mühendisi yapan ne? Biz okulda ne öğreniyoruz da farklı oluyoruz. Nedir üniversiteyi zorunlu kılan?", bunlardan bahsetmemiştim. (Bahsetmişsem de unutun onları, şimdi daha iyisini yazacağım.)

*

Birkaç gündür Makine öğrenmesi çalışıyorum. İşte çalışmamdan bir kesit:



Öncelikle bkz: Allah belasını versin böyle matematiğin

Yukarıdaki formüller bir bilgisayar dersinin slaytlarından bir kesit. Neredeyse bütün teknik, bilimsel çalışmalara konu olan bilgisayar dersinde bu tip formüllere rastlayabilirsiniz. (Tabii hepsinde kompleks formüller bulamayabilirsiniz, dersine göre değişir.)

Yukarıdaki acayip harfler bütününü elimden geldiğince açıklayayım bakalım sıkılmadan okuyabilecek misiniz:

Makine öğrenmesi özetle belli vakalarda çıkan sonucu kaydeder, sonra yeni vakalardaki sonucu tahmin etmeye çalışır. Açalım: A, B, C kişileri (vakalar) hastahaneye kaldırılıyor. A, B'de akciğer kanseri çıkıyor, C'de çıkmıyor (sonuçlar). Sonra A, B ve C'nin bilgilerine (değişkenler) bakıyorlar. A 54 yaşında, 2 çocuk babası, sigara içiyor. B 48 yaşında, sigara içiyor, armut yiyor. C 56 yaşında, sigara içmiyor, hem armut yiyor hem de 12 çocuk babası. "Hee tamam o zaman çocuklarla ve armutla alakası yok, sigara içiyorsa akciğer kanseridir, içmiyorsa değildir, yaş olarak da minimum 48 yaşındaysa tamam ölmüş o adam." diyip bir program yazıp bilgisayara yediriyorlar. Sonra hastahaneye 60 yaşında, sigara içmeyen 2 çocuk babası bir adam geliyor, ismi "Walter White", bunu "Hasta değil bu bunu alın buradan." diye gönderiyor. Eee tabii bu kadar kısıtlı veriyle ve süper düz bir mantıkla yazılmış bu gerzek program haliyle daha ilk sınavında cortlamış oluyor ve bilim adamları "Yav bu mühendisler de bir şeyi beceremediler, en iyisi araştıralım biz bunu." diye "Makine Öğrenmesi" (Machine Learning) diye bir bilim dalı ortaya çıkarıyorlar.

(Burası zevkli taraftı, sıkıcı taraf geliyor.)

Yukarıdaki formüle gelelim. Vakaya (örnek de denir) x diyoruz. Vakanın sonucuna y diyoruz. f(x) = y özetle. Buraya kadar tamam. Bu vakanın y sonucu vermesine de x'teki bir takım değişkenler neden oluyor. Bunları da x'in altına sayı koyarak gösteriyoruz. x1, x2, x3 gibi. (Yani x aslında bir sayı değil, bir matris, içinde de değişkenler var.) Eğer sayılar x'e üslü sayı olarak geliyorsa x^1, x^2, x^3 şeklinde, bu ise o x'in kaçıncı vakayı temsil ettiğini gösterir, örneğin yukarıdaki örnekte A kişisi birinci vaka yani x^1'dir. Aynı şekilde y^2'de 2. vakanın sonucudur. hθ(x) ise hipotez yani tahmin fonksiyonu. Tahmin fonksiyonunun formülü tahmin edeceğin şeyin türüne göre değişebiliyor. Örneğin bir insan 100 metre yürürse 250 kalori yakar, 200 metre yürürse 450 kalori yakar, 300 metre yürürse 650 kalori yakar, 400 metre yürürse kaç kalori yakar? şeklinde bir problemde sonuçlar doğrusal olduğundan hipotez fonksiyonunu da doğrusal yaparız yani 2m + 50 şeklinde (m yürünen metre). Doğrusal hipotezi de θ0 + θ1xdiye gösterebiliriz. Tabii değişken sayısı arttıkça tetalar da artar ayrıca sonuçlar doğrusal bir grafik değil de parabolik bir grafik çiziyorsa değişkenlerin karelerini küplerini vs. almamız gerekebilir. Fakat bazı durumlarda hipotezimiz eldeki vakalara mükemmelce uyar fakat yeni tahminlerde saçmalar çünkü yeterince genel bir formül değildir. Anlatarak olmayacak, resmini atayım:



Bahsettiğim durum en sağdaki durum, yani overfit. Yılan gibi kıvrılan saçma sapan bir doğru (eğri?) çizdiğimiz için yeni tahminler yapamıyoruz. Bunu engellemek için de ortaya regulasyon çıkmış. Yanda gördüğünüz lamda/m çarpı teta formülü de tetaların etkisini azaltmaya yarıyor. 
Hipotezimiz ne kadar doğru bunu anlamak için de bir formülümüz var. (hipotez - gerçek sonucu)^2 (karesini alarak bu çıkarmanın sonucunun pozitif olmasını garantileriz.) sonra bu toplamayı tüm vakalar için yaparız. Buna da "cost function" yani maliyet fonksiyonu deriz. Biz bu fonksiyonun olabildiğince küçük değer vermesini istiyoruz. Bu fonksiyonun formülünde bizim hipotez fonksiyonu da rol oynadığı için biz en düşük değeri bulurken hipotez fonksiyonunu değiştiriyoruz e bunu yaparken haliyle x'leri (yani değişkenleri) değiştiremeyeceğimize göre tetaları değiştiriyoruz. Tetaları değiştirmenin de algoritması var özetle eski teta'dan "maliye fonksiyonunun regulasyonla toplamının tetaya göre türevi"ni çıkart yeni teta yap. (x'i beş yap, elmayı armut yap tarzı şeyler := ile gösterilir.) O gördüğünüz köşeli parantezdeki formül maliye fonksiyonunun türevi yani.
Peki iki üstteki resimde hipotez fonksiyonu niye akraba evliliğine dönmüş? Bak o uzun hikaye. 
Bunları anlatarak hem beyninizi yakmış oldum hem de konu tekrarı yaptım ehehe.          

Bu da Elektroniğin baba derslerinden "Dijital Sinyal İşleme" dersinin ünlü formülü "Fast Fourier Transform" yani "Hızlı Fourier Dönüşümü". (Bilgisayar mühendislerine de verilir bu ders. Arkadaşım bu dersin finalinden 4 alarak dersten geçtiğini söyledi çünkü kalma/geçme çan eğrisiyle belli oluyordu.)


Sorarım size, sinyal nerede? Devreler nerede? Arçelik bunun neresinde?

Sadede geliyorum: Arkadaşlar bilgisayar mühendisi kod yazan adam değildir, yukarıdaki formülleri icat eden adamdır veya icat edilmiş şeyleri denenmemiş yerlere uygulayarak yeni (Akıl Oyunları'nda John Nash bardan hatun kaldırma stratejisini ekonomiye uygulayıp da Oyun Teorisini buluyor ya o hesap) problemlere yeni çözümler getiren insandır. Yukarıda gördüğünüz formülleri matematikçiler geliştirdiyse bile bunu bilgisayara, programlara, web sitelerine, aplikasyonlara uygulama işi başlıbaşına bir alan. Ve sadece bilim adamlarının işi değil. Google'daki mühendisler daha hızlı nasıl arama yapabiliriz diye formüller geliştiriyor veya eldeki kodlarını daha da hızlandırmaya bakıyorlar (sonra da arama şu kadar sürdü diye gururla sitelerine yazıyorlar), Facebook'taki adam güvenliği sağlamak için spam paylaşımları engelleyen uygulama geliştiriyor ve tabii bu uygulamayı geliştirirken de neyin spam paylaşım olduğunu tahmin etmeye yönelik çalışmalar yapıyor ki "durum çok ciddi" diyip tüm suçu facebook'a yıkan adamlar yüzünden FBI ile başı derde girmesin.
Bakın size çok basit bir araştırma konusu vereyim isterseniz ileride üzerinde çalışıp milyarder olun; Spotify dinlediğiniz müziklere göre her hafta size çalma listesi hazırlıyor. Bu çalma listesini neye göre belirliyor düşündünüz mü? Spotify bunu sizle aynı müzikleri dinleyenlerin çalma listelerinden şarkı araklayarak yapıyor, dolayısıyla araya çöp şarkılar girebiliyor. Halbuki yukarıda anlattığım makine öğrenmesini kullanıp şarkıları analiz ederek (atıyorum X şarkısında şu frekansta kadın sesi var A kişisi beğenmiş, Y şarkısında da aynı frekansta kadın sesi var o zaman A'ya bunu da önerelim) da bir çalma listesi oluşturabilirdi ama çok tembel olduğu için yapmıyor. Belki ileride siz yaparsınız?

Küçükken yazılımı çok kolay zannederdim, derdim "Zaten her şey internette yok mu?" Hem evet hem hayır. Her şey internette var, yani internette dolu kodlama dersi ve belirli çözümler için yazılmış hazır kodlar var ama bunları kullanmak için en uygun yolu bulmak sizin elinizde. Atıyorum X yazılımını her yazılımcı yazabilir ama bu yazılımı 10 satırda yazıp programı da 1 dakikada çalışıp işini bitirecek şekilde herkes yazamaz.

Yazamayan mühendisler de olabilir, yazabilen lise mezunları da. Fakat patron yazmasını garanti gördüğü kişiyi alır. Mühendisler de bunun eğitimini aldığı için bunun sözünü önceden verir diyebiliriz.

Bilgisayar mühendisliği bu tip görevleri yerine getirebilecek adamları yetiştirmek için hazırlanmış bir bölümdür bu yüzden Türkiye'nin (hatta dünyanın) her yerinde ders programları üç aşağı beş yukarı aynıdır. Örnek:

İTÜ Bilgisayar: (Türkçe eğitim veren en iyi üniversite diye burayı yazdım ama İngilizce dersler mevcut)
http://www.sis.itu.edu.tr/tr/dersplan/plan/BLG/201110.html

Elazığ Fırat Üniversitesi:
http://bil.muh.firat.edu.tr/tr/node/109

Biraz inceleyin. Tembelseniz ben söyleyeyim: neredeyse aynılar.

Fark şu; ODTÜ'den adam "Merhaba ASELSAN, ben ODTÜ'den mezunum 3.32 ortalamam var son senemde makine öğrenmesi üzerine Prof. Dr. Bilal Geyik'in gözetiminde projeler yaptım." deyince ASELSAN "Gel bana gel bana bebeğim." derken Elazığ Fıratlı eleman "Selam ben yeni mezunum, not ortalamam 3.90 çok başarılıyım." derse "Yeme bizi Nuri" diyebilirler. Demeye de bilirler. Bilgisayar mühendisliği müfredat yazınca Fırat ilk sayfada çıkıyordu o yüzden kurbanım oldular. Mezunları nasıl, itibarı iyi bir üniversite mi hiç fikrim yok.

Fakat şu bir gerçek ki günümüzde bilgisayar mühendisliğini Stanford'da da, Trabzon'da da, Angola'da da okuyabileceğiniz için şirketler sizden kendinizi başka şekillerde de kanıtlamanızı ister ki bu daha başka yazının konusu.

Fakat Türkiye'de patronlar "Şirketimize gelen ziyaretçilerin konumuyla müşterilerimizin konumlarını eşleştirelim böylece en dönek müşterileri bulup evlerine virüs atan canavar mühendisler alalım!!!!" demezler, sadece websitesi ve şirkete has basit uygulamaları yazacak ve bunların devamlı olarak sorunsuz çalışmasını sağlayacak birini ararlar. O yüzden herkesin mühendis olmasına gerek yoktur. Bu yüzden Bilkent CTIS gibi sırf "programcı" yetiştirmeye yarayan bölümler vardır. Veya patronlar iş ilanlarına "Üniversitelerin Bilgisayar müh., Endüstri müh. veya Matematik bölümlerinden mezun" tarzı geniş ifadeler yazarlar çünkü sadece elindeki işi yapabilecek biraz da kafası çalışan birine ihtiyaçları vardır.  (biraz kariyet.net'i inceleyin.) Ama gidip de lise mezunu biriyle de iş yapmak istemezler. Fakat ya bu lise mezunu kişi ssg gibi Microsoft'ta çalışmış, Türkiye'nin en çok tıklanan sitelerinden birini açmış yani özetle feleğin çemberinden geçmiş biriyse? Tabii o zaman istisna. Lâkin şu var ki ssg'nin, Bill Gates'in, Steje Jobs'un yani bilgisayarın yeni ve acayip bir alet olduğu ve etrafta zaten bilgisayar mühendisinin bulunmadığı zamanlardan bilginin güç olduğu ve dağda otun Hindistan'da bilgisayar mühendisinin bittiği zamanlara geldik. Yani artık öyle kahramanlık hikayeleri yazmak güç.

Bu arada yukarıda "Her şey internette vardır." önermemin aynı zamanda yanlış olduğunu söylemiştim. Bunu zaten açıkladım. "Spotify'da müzikleri analiz ederek kendi zevkime göre en harika müzikleri nasıl bulurum." diye google araması yapmayın cevabı yoktur. Bu yüzden dünyada üniversiteler ve araştırma enstitüleri var.

3. madde için laflar hazırladım ama toparlayamadım. Ama sanıyorum başlıktaki soruyu güzelce cevapladım. Sorusu olan? :)))

Son olarak, soru: "Ben Bilgisayar mühendisliği değil Elektronik mühendisliği yazacağım. Oradan bilgisayara kayacağım!" (Verdiğim linkte ODTÜlü hoca da buna cevap vermiş.)

Kayabilirsiniz!!! Kesinlikle kayabilirsiniz! Şu anda ofiste Boğaziçi Elektronikte okuyan Galatasaray lisesi mezunu bir arkadaşla aynı işi yapıyoruz. Oda arkadaşım İTÜ Elektronik ve Haberleşme mezunu fakat şu an Koç'ta Bilgisayar mühendisliği doktorasına hazırlanıyor. Siz de yapabilirseniz. Fakat bu arkadaşların yaptığı gibi bir sürü teorik elektronik dersiyle, bilgisayar mühendislerinin el sürmeyeceği düşük seviyeli kodlama dilleriyle ve yine bilgisayarla alakalı olmayan türev integral tabanlı matematik dersleriyle cebelleşirken "Elektroniğin de Allah belasını versin, azimli yazarın da." demeyin. Yani ileride Kimyacı olmayı hedefleyip lisede bir ton Fizik dersi almak gibi bir şey bu. Bu yapılmayacak bir şey değil, (Belki bilgisayar mühendisliği okurken daha elektroniğe yakın alanlara kaymaya başlayacaksınız?) fakat daha kafanızı organik kimyadan, hücrenin bölümlerinden kaldırmamışken "ileride ona buna kayarım" temalı dolaylı planlarla asla tercih yapmayın.