avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada mesej peribadi
4
fokus pada
1271
Pengikut

Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

Dicipta dalam: 2016-12-07 12:37:21, dikemas kini pada: 2016-12-07 12:40:26
comments   3
hits   3472

Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah


Adakah anda hanya mempunyai sedikit pemahaman samar-samar tentang apa yang dimaksudkan dengan pembelajaran mesin apabila anda mendengar orang bercakap tentangnya? Adakah anda sudah bosan dengan hanya mengangguk-angguk kepala ketika bercakap dengan rakan sekerja anda?

Panduan ini ditujukan kepada semua yang ingin tahu tentang pembelajaran mesin tetapi tidak tahu bagaimana untuk memulakannya. Saya rasa ramai yang telah membaca kata-kata Wikipedia mengenai pembelajaran mesin yang membosankan dan kecewa kerana tidak ada yang dapat memberikan penjelasan yang lebih tinggi.

Tujuan artikel ini adalah untuk menjadi mudah didekati, yang bermaksud terdapat banyak ringkasan dalam artikel tersebut. Tetapi siapa yang peduli dengan ini?

  • ### Mengapa Pembelajaran Mesin?

Konsep pembelajaran mesin ini berpendapat bahawa anda tidak perlu menulis sebarang kod program khusus untuk menyelesaikan masalah, algoritma genetik (algoritma generik) dapat memberikan jawapan yang menarik kepada anda dalam set data. Untuk algoritma genetik, tidak perlu membuat kod, tetapi memasukkan data, ia akan membina logiknya sendiri di atas data.

Sebagai contoh, ada satu kelas algoritma yang dikenali sebagai algoritma klasifikasi, yang boleh membahagikan data kepada kumpulan yang berbeza. Algoritma klasifikasi yang digunakan untuk mengenali nombor bertulis tangan, boleh digunakan untuk membahagikan e-mel kepada spam dan e-mel biasa tanpa mengubah satu baris kod. Algoritma tidak berubah, tetapi latihan data yang dimasukkan berubah, oleh itu ia menghasilkan logik klasifikasi yang berbeza.

Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

Algoritma pembelajaran mesin adalah kotak hitam yang boleh digunakan semula untuk menyelesaikan pelbagai masalah klasifikasi.

Pembelajaran mesin adalah istilah yang meluas yang merangkumi banyak algoritma genetik yang serupa.

  • ### Dua jenis algoritma pembelajaran mesin

Anda boleh melihat algoritma pembelajaran mesin sebagai dua kategori: pembelajaran terpelihara dan pembelajaran tidak terpelihara. Perbezaan antara kedua-duanya adalah mudah, tetapi sangat penting.

  • Pembelajaran Terpandu

    Katakanlah anda seorang ejen hartanah, dan perniagaan anda semakin besar, jadi anda mengambil pekerja magang untuk membantu anda. Tetapi masalahnya ialah anda boleh melihat rumah anda dan anda tahu berapa nilainya, dan pekerja magang tidak berpengalaman dan tidak tahu bagaimana untuk menilai.

    Untuk membantu pelajar anda (dan mungkin untuk membebaskan diri anda untuk bercuti), anda membuat keputusan untuk membuat perisian kecil untuk menilai nilai rumah di kawasan anda berdasarkan faktor-faktor seperti saiz rumah, kawasan dan harga jual-beli rumah yang serupa.

    Anda telah menulis setiap transaksi rumah di bandar selama tiga bulan, dan setiap satu anda telah mencatat banyak butiran seperti jumlah bilik tidur, saiz rumah, plot, dan sebagainya.

    Ini adalah data latihan yoga kami.

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Kami akan menggunakan data latihan ini untuk menulis program untuk menganggarkan nilai rumah-rumah lain di kawasan ini:

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Ini dipanggil pembelajaran pengawasan. Anda sudah tahu harga jual setiap rumah, dengan kata lain, anda tahu jawapan kepada soalan dan boleh membalikkan logiknya.

    Untuk menulis perisian, anda akan memasukkan data latihan untuk setiap set hartanah ke dalam algoritma pembelajaran mesin anda. Algoritma cuba mencari operasi yang harus digunakan untuk mendapatkan nombor harga.

    Ini seperti soalan latihan aritmatika, semua simbol operasi di dalam aritmatika dihapuskan:

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Oh Tuhan! Seorang pelajar yang licik telah menghapuskan semua simbol matematik dari jawapan guru.

    Adakah anda dapat memahami apa yang terdapat dalam ujian ini? anda tahu, anda perlu melakukan sesuatu pada baris nombor di sebelah kiri untuk mendapatkan jawapan pada baris di sebelah kanan.

    Dalam pembelajaran terkawal, anda meminta komputer untuk mengira hubungan antara nombor untuk anda. Dan setelah anda mengetahui kaedah matematik yang diperlukan untuk menyelesaikan masalah tertentu seperti ini, anda boleh menyelesaikan masalah lain yang serupa.

  • Pembelajaran tanpa pengawasan

    Mari kita kembali kepada contoh ejen hartanah yang kita mulakan. Jika anda tidak tahu harga jual setiap unit rumah, anda boleh membuat reka bentuk yang hebat walaupun anda hanya tahu saiz rumah, lokasi dan sebagainya.

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Walaupun anda tidak mahu meramalkan data yang tidak diketahui (seperti harga), anda boleh menggunakan pembelajaran mesin untuk melakukan sesuatu yang menarik.

    Ia seperti seseorang memberikan anda selembar kertas dengan banyak nombor di atasnya, dan berkata kepada anda, “Saya tidak tahu apa makna nombor-nombor ini, mungkin anda boleh mencari peraturan atau mengelompokkannya atau apa-apa lagi - semoga berjaya!”

    Pertama, anda boleh menggunakan algoritma untuk membahagikan pasaran secara automatik dari data. Mungkin anda akan mendapati bahawa pembeli rumah berhampiran universiti lebih suka rumah kecil dengan banyak bilik tidur, dan pembeli rumah di pinggir bandar lebih suka rumah besar dengan tiga bilik tidur.

    Anda juga boleh melakukan sesuatu yang hebat, secara automatik mencari data harga rumah yang berbeza daripada data yang lain. Rumah-rumah yang berada di dalam kumpulan mungkin adalah bangunan-bangunan tinggi, dan anda boleh menumpukan penjual terbaik di kawasan-kawasan ini kerana komisen mereka lebih tinggi.

    Kami akan membincangkan pembelajaran pengawasan di bahagian seterusnya, tetapi bukan kerana ia tidak berguna atau tidak berguna. Sebenarnya, pembelajaran tanpa pengawasan menjadi lebih penting kerana algoritma yang lebih baik tidak perlu menghubungkan data dengan jawapan yang betul.

    Ada banyak lagi jenis algoritma pembelajaran mesin. Tetapi ia adalah lebih baik untuk difahami semasa anda baru belajar.

    Saya tidak tahu apa-apa tentang harga rumah, tetapi saya fikir ia adalah satu perkara yang sangat menarik, tetapi adakah ia benar-benar boleh dianggap sebagai pembelajaran yang sukar?

    Sebagai sebahagian daripada manusia, otak anda dapat menangani kebanyakan situasi dan belajar bagaimana untuk melakukannya tanpa sebarang arahan yang jelas. Jika anda telah menjadi broker hartanah untuk masa yang lama, anda akan mempunyai rasa yang baik tentang harga hartanah yang sesuai, cara memasarkannya dengan terbaik, dan apa yang menarik minat pelanggan.

    Tetapi algoritma pembelajaran mesin yang ada pada masa ini tidak begitu baik kerana mereka hanya boleh memberi tumpuan kepada masalah yang sangat spesifik dan terhad. Mungkin dalam kes ini, satu definisi yang lebih tepat untuk pembelajaran paip adalah paip mencari persamaan untuk menyelesaikan masalah tertentu berdasarkan sedikit data contoh.

    Malangnya, mesin penyulit mencari persamaan untuk menyelesaikan masalah tertentu berdasarkan data contoh yang sedikit. Nama penyulit terlalu buruk.

    Sudah tentu, jika anda membaca artikel ini selepas 50 tahun, kita sudah mempunyai algoritma kecerdasan buatan yang kuat, dan ia kelihatan seperti barang antik.

    Mari kita menulis kod!

    Bagaimana anda akan menulis prosedur penilaian harga rumah dalam contoh di atas?

    Jika anda tidak tahu apa-apa tentang pembelajaran mesin, kemungkinan besar anda akan cuba menulis beberapa peraturan asas untuk menilai harga rumah, seperti berikut:

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = 0
        # In my area, the average house costs $200 per sqft
        price_per_sqft = 200
    
    
        if neighborhood == "hipsterton":
        # but some areas cost a bit more
            price_per_sqft = 400
    
    
        elif neighborhood == "skid row":
        # and some areas cost less
            price_per_sqft = 100
    
    
        # start with a base price estimate based on how big the place is
        price = price_per_sqft * sqft
    
    
        # now adjust our estimate based on the number of bedrooms
        if num_of_bedrooms == 0:
        # Studio apartments are cheap
            price = price — 20000
        else:
        # places with more bedrooms are usually
        # more valuable
            price = price + (num_of_bedrooms * 1000)
    
    
        return price
    

    Mungkin anda akan mendapat sedikit hasil jika anda sibuk selama beberapa jam seperti ini, tetapi program anda tidak akan sempurna, dan ia sukar untuk dijaga apabila harga berubah.

    Tidakkah lebih baik jika komputer dapat mencari cara untuk melaksanakan fungsi-fungsi yang disebutkan di atas? Siapa yang akan peduli dengan apa yang dilakukan oleh fungsi tersebut, asalkan nombor harga rumah yang dikembalikan adalah betul?

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = <computer, plz do some math for me>
        return price
    

    Salah satu cara untuk mempertimbangkan masalah ini adalah dengan melihat harga rumah sebagai hidangan yang sedap, yang terdiri daripada jumlah bilik tidur, luas dan lantai. Jika anda dapat mengira berapa banyak setiap bahan mempengaruhi harga akhir, anda mungkin dapat menggabungkan bahan-bahan yang berbeza untuk membentuk peratusan harga akhir.

    Ini akan menjadikan program asal anda (semua ayat-ayat ‘if else’ yang gila) menjadi seperti ini:

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = 0
    
    
        # a little pinch of this
        price += num_of_bedrooms * .841231951398213
    
    
        # and a big pinch of that
        price += sqft * 1231.1231231
    
    
        # maybe a handful of this
        price += neighborhood * 2.3242341421
    
    
        # and finally, just a little extra salt for good measure
        price += 201.23432095
    
    
        return price
    

    Perhatikan nombor-nombor ajaib yang ditandakan dengan huruf kasar: 841231951398213, 1231.1231231, 2.3242341421, dan 201.23432095. Mereka dipanggil berat. Jika kita dapat mencari berat sempurna yang digunakan untuk setiap rumah, fungsi kita dapat meramalkan semua harga rumah!

    Salah satu cara untuk menentukan berat badan yang optimum adalah seperti berikut:

    Langkah 1:

    Pertama, letakkan berat pada 1.0.

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = 0
    
    
        # a little pinch of this
        price += num_of_bedrooms * 1.0
    
    
        # and a big pinch of that
        price += sqft * 1.0
    
    
        # maybe a handful of this
        price += neighborhood * 1.0
    
    
        # and finally, just a little extra salt for good measure
        price += 1.0
    
    
        return price
    

    Langkah 2:

    Bawa setiap unit ke dalam operasi fungsi anda dan periksa sejauh mana nilai anggaran anda berbeza dengan harga yang betul:

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Menggunakan program anda untuk meramalkan harga rumah.

    Sebagai contoh: harga sebenar hartanah pertama dalam jadual di atas ialah \(250,000, dan nilai fungsi anda ialah \)178,000, jadi anda kehilangan $72,000 untuk hartanah ini.

    Kemudian, anda perlu menambah nilai-nilai setiap unit hartanah dalam dataset anda. Anggaplah ada 500 unit hartanah dalam dataset anda, nilai-nilai setiap unit hartanah dalam dataset anda akan berjumlah $86,123,373.

    Sekarang, bahagikan jumlah keseluruhan dengan 500, dan anda akan mendapat penilaian setiap unit rumah yang menyimpang dari purata. Anggaplah nilai rata-rata yang menyimpang itu sebagai kos fungsi anda.

    Jika anda boleh menyesuaikan berat kepada 0 untuk kos ini, fungsi anda akan sempurna. Ia bermakna, berdasarkan data yang anda masukkan, program anda akan membuat penilaian yang sama untuk setiap transaksi hartanah. Dan itulah tujuan kami untuk mencuba nilai berat yang berbeza untuk memastikan kos adalah serendah mungkin.

    Langkah 3:

    Ulangi langkah 2 berulang kali, cuba semua kombinasi nilai berat yang mungkin. Mana satu kombinasi yang membuat kos paling dekat dengan 0, itu yang anda gunakan, dan apabila anda dapati kombinasi itu, masalah itu akan diselesaikan!

    Fikiran mengganggu masa

    Ini sangat mudah, bukan? Bayangkan apa yang anda lakukan tadi. Anda mendapat data, memasukkan ia ke dalam tiga langkah mudah, dan akhirnya anda mendapat fungsi yang boleh membuat penilaian rumah di kawasan anda. Tetapi fakta-fakta berikut mungkin mengganggu fikiran anda:

      1. Dalam 40 tahun yang lalu, banyak kajian dalam bidang seperti linguistik/terjemahan menunjukkan bahawa algoritma pembelajaran yang menggunakan data gerak generik (kata-kata yang saya cipta) telah mengalahkan kaedah yang memerlukan peraturan yang jelas menggunakan manusia sebenar.
      1. Fungsi terakhir yang anda buat adalah berapakah, ia tidak tahu apa yang berapakah luas bilik dan berapakah jumlah bilik tidur. Ia hanya tahu menggerakkan dan menukar nombor untuk mendapatkan jawapan yang betul.
      1. Mungkin anda tidak tahu mengapa satu set nilai berat tertentu berfungsi. Jadi anda hanya menulis fungsi yang anda tidak faham tetapi dapat dibuktikan.
      1. Bayangkan jika program anda tidak mempunyai parameter seperti saiz kubus kubus dan jumlah bilik tidur kubus, tetapi menerima satu set nombor. Anggaplah setiap nombor mewakili satu piksel dalam gambar yang ditangkap oleh kamera yang dipasang di atas bumbung kereta anda, dan output yang diramalkan tidak dipanggil kubus harga kubus tetapi kubus pusingan stereng kubus, jadi anda mempunyai program yang dapat memanipulasi kereta anda secara automatik!

    Ia agak gila, bukan?

    Bagaimana dengan langkah 3 apabila anda cuba setiap nombor?

    Sudah tentu, anda tidak boleh mencuba semua nilai berat yang mungkin untuk mencari kombinasi terbaik. Ia akan memakan masa yang lama, kerana jumlah yang cuba mungkin tidak berkesudahan. Untuk mengelakkan keadaan ini, ahli matematik telah menemui banyak cara pintar untuk mencari nilai berat yang baik dengan cepat tanpa perlu mencuba terlalu banyak. Berikut adalah salah satu daripada mereka: Pertama, tulis persamaan mudah untuk langkah 2:

    Ini adalah fungsi kos anda.

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Seterusnya, mari kita tulis semula persamaan yang sama menggunakan istilah matematik pembelajaran mesin (untuk masa ini anda boleh mengabaikannya):

    θ menunjukkan nilai berat semasa . J ((θ) bermaksud nilai berat semasa yang sepadan dengan harga .

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Persamaan ini menunjukkan saiz kesesuaian program penilaian kita dengan nilai berat semasa.

    Jika semua nilai berat yang mungkin diberikan kepada bilangan bilik tidur dan luas bilik tidur digambarkan dalam bentuk grafik, kita akan mendapat grafik seperti di bawah:

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Satu mangkuk dalam grafik fungsi kos. Axis vertikal menunjukkan kos.

    Jadi, jika kita dapat mencari satu set nilai berat yang membawa kita ke titik terendah dalam grafik, kita akan mendapat jawapannya!

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Oleh itu, kita hanya perlu menyesuaikan berat supaya kita boleh bergerak ke arah titik terendah di carta. Jika penyesuaian kecil terhadap berat dapat membuat kita terus bergerak ke arah titik terendah, maka akhirnya kita tidak perlu mencuba terlalu banyak berat untuk sampai ke sana.

    Jika anda masih ingat sedikit tentang algebra, anda mungkin masih ingat bahawa jika anda bertanya kepada satu fungsi, hasilnya akan memberitahu anda slope fungsi pada mana-mana titik. Dengan kata lain, untuk titik tertentu dalam grafik, ia memberitahu kita bahawa jalan itu adalah jalan yang menurun.

    Oleh itu, jika kita mencari bias fungsi kos untuk setiap berat, maka kita boleh mengurangkan nilai dari setiap berat. Ini akan membawa kita lebih dekat ke bawah. Terus melakukannya, dan akhirnya kita akan sampai ke bahagian bawah dan mendapat nilai terbaik berat.

    Kaedah untuk mencari berat terbaik ini dikenali sebagai penurunan gradien kuantiti, dan ini adalah ringkasan yang tinggi untuknya. Jika anda ingin memahami perincian, jangan takut, teruskan ke bawah.

    Apabila anda menggunakan perpustakaan algoritma pembelajaran mesin untuk menyelesaikan masalah sebenar, semua ini sudah siap untuk anda. Tetapi selalu berguna untuk mengetahui beberapa butiran khusus.

    Apa lagi yang anda terlepas pandang?

    Algoritma tiga langkah yang saya terangkan di atas dipanggil regresi multilineal. Persamaan anda adalah mencari satu garis lurus yang dapat menampung semua titik data harga rumah. Kemudian anda menggunakan persamaan ini untuk menganggarkan harga rumah yang tidak pernah anda lihat berdasarkan kemungkinan kedudukan harga rumah di atas garis lurus anda.

    Tetapi, kaedah yang saya tunjukkan kepada anda mungkin berkesan dalam kes-kes yang mudah, dan ia tidak akan berfungsi dalam kes-kes yang mudah. Salah satu sebab adalah kerana harga rumah tidak akan selalu mengikut garis lurus yang terus menerus.

    Tetapi, untungnya, terdapat banyak cara untuk menangani keadaan ini. Untuk data bukan linear, banyak jenis algoritma pembelajaran mesin yang lain dapat dikendalikan (seperti rangkaian saraf atau mesin vektor nuklear). Terdapat banyak cara untuk menggunakan regresi linear yang lebih fleksibel, dengan menggunakan garis yang lebih rumit untuk menyesuaikan.

    Saya juga terlepas dari konsep pencocokan. Sangat mudah untuk menemui satu set nilai berat yang dapat meramalkan harga rumah dalam dataset asal anda dengan sempurna, tetapi tidak dapat meramalkan harga rumah baru di luar dataset asal anda. Terdapat banyak penyelesaian untuk keadaan ini (seperti normalisasi dan menggunakan dataset yang disahkan silang).

    Dalam erti kata lain, konsep asasnya sangat mudah dan memerlukan sedikit kemahiran dan pengalaman untuk menggunakan pembelajaran mesin untuk mendapatkan hasil yang berguna. Tetapi, ia adalah kemahiran yang boleh dipelajari oleh setiap pemaju.

  • Adakah Pembelajaran Mesin Berkuasa?

    Sebaik sahaja anda mula memahami bahawa teknologi pembelajaran mesin mudah digunakan untuk menyelesaikan masalah yang nampaknya sukar (seperti pengiktirafan tulisan tangan), anda akan mempunyai perasaan bahawa dengan data yang mencukupi, anda boleh menyelesaikan masalah dengan pembelajaran mesin. Anda hanya perlu memasukkan data dan melihat persamaan yang sesuai dengan data seperti permainan komputer.

    Tetapi penting untuk diingat bahawa pembelajaran mesin hanya boleh digunakan untuk masalah yang dapat diselesaikan dengan data yang anda miliki.

    Sebagai contoh, jika anda membina sebuah model untuk meramalkan harga rumah berdasarkan jumlah tanaman dalam setiap rumah, ia tidak akan berjaya. Tidak ada hubungan antara jumlah tanaman dalam rumah dan harga rumah.

    Pembelajaran Mesin untuk Keseronokan: Panduan Pemula Paling Mudah

    Anda hanya boleh memodelkan hubungan yang wujud.

  • Bagaimana untuk mempelajari pembelajaran mesin secara mendalam

    Saya fikir masalah terbesar yang dihadapi oleh pembelajaran mesin sekarang ialah ia aktif di kalangan ahli akademik dan organisasi penyelidikan perniagaan. Tidak banyak bahan pembelajaran yang mudah dan mudah difahami untuk orang yang ingin memahami secara keseluruhan dan tidak ingin menjadi pakar.

    Prof. Andrew Ng: Kursus percuma pembelajaran mesin di Coursera sangat bagus. Saya sangat mengesyorkan untuk memulakan di sini.

    Selain itu, anda boleh memuat turun dan memasang SciKit-Learn untuk menguji beribu-ribu algoritma pembelajaran mesin. Ia adalah kerangka kerja Python yang mempunyai versi kotak hitam untuk semua algoritma standard.

Dipetik daripada Python Developer