Sambutlah "Hello, World" dari machine learning

1. Sebelum memulai

Dalam codelab ini, Anda akan mempelajari "Hello, World" dasar ML, di mana Anda tidak akan memprogram aturan eksplisit dalam bahasa, seperti Java atau C++, Anda akan membangun sistem yang dilatih pada data untuk menyimpulkan aturan yang menentukan hubungan antara angka.

Pertimbangkan masalah berikut: Anda sedang membangun sistem yang melakukan pengenalan aktivitas untuk pelacakan kebugaran. Anda mungkin memiliki akses ke kecepatan seseorang berjalan dan mencoba menyimpulkan aktivitas mereka berdasarkan kecepatan tersebut menggunakan kondisional.

cc3628d9a1547597.png

if(speed<4){
  status=WALKING;
}

Anda dapat memperluasnya agar berjalan dengan kondisi lain.

f2cc3929221107b8.png

if(speed<4){
    status=WALKING;
} else {
    status=RUNNING;
}

Dalam kondisi terakhir, Anda juga dapat mendeteksi bersepeda.

aeb282cf03d5cff.png

if(speed<4){
    status=WALKING;
} else if(speed<12){
    status=RUNNING;
} else {
    status=BIKING;
}

Sekarang, pertimbangkan apa yang terjadi jika Anda ingin menyertakan aktivitas, seperti golf. Cara membuat aturan untuk menentukan aktivitas tidak terlalu jelas.

fc772abb6fee2804.png

// Now what?

Sangat sulit untuk menulis program yang akan mengenali aktivitas golf, jadi apa yang Anda lakukan? Anda dapat menggunakan ML untuk menyelesaikan masalah.

Prasyarat

Sebelum mencoba codelab ini, Anda perlu:

  • Pengetahuan yang solid tentang Python
  • Keterampilan pemrograman dasar

Yang akan Anda pelajari

  • Dasar-dasar machine learning

Yang akan Anda build

  • Model machine learning pertama Anda

Yang Anda butuhkan

Jika belum pernah membuat model ML menggunakan TensorFlow, Anda dapat menggunakan Colaboratory, lingkungan berbasis browser yang berisi semua dependensi yang diperlukan. Anda dapat menemukan kode untuk codelab lainnya yang berjalan di Colab.

Jika menggunakan IDE lain, pastikan Anda telah menginstal Python. Anda juga akan memerlukan TensorFlow dan library NumPy. Anda dapat mempelajari lebih lanjut dan menginstal TensorFlow di sini. Instal NumPy di sini.

2. Apa itu ML?

Pertimbangkan cara tradisional dalam membuat aplikasi, seperti yang direpresentasikan dalam diagram berikut:

c72f871306134e45.png

Anda menyatakan aturan dalam bahasa pemrograman. Mereka bertindak berdasarkan data dan program Anda memberikan jawaban**.** Dalam kasus deteksi aktivitas, aturan (kode yang Anda tulis untuk menentukan jenis aktivitas) menindaklanjuti data (kecepatan gerakan orang tersebut) untuk menghasilkan jawaban: nilai pengembalian dari fungsi untuk menentukan status aktivitas pengguna (apakah mereka sedang berjalan, berlari, bersepeda, atau melakukan hal lainnya).

Proses untuk mendeteksi status aktivitas melalui ML sangat mirip, hanya sumbunya yang berbeda.

9b85a337ee816e1b.png

Alih-alih mencoba menentukan aturan dan mengekspresikannya dalam bahasa pemrograman, Anda memberikan jawaban (biasanya disebut label) bersama dengan data, dan mesin menyimpulkan aturan yang menentukan hubungan antara jawaban dan data. Misalnya, skenario deteksi aktivitas Anda mungkin terlihat seperti ini dalam konteks ML:

6ff58697a85931f4.png

Anda mengumpulkan banyak data dan memberinya label untuk secara efektif mengatakan, "Seperti inilah tampilan jalan," atau "Seperti inilah tampilan berlari." Kemudian, komputer dapat menyimpulkan aturan yang menentukan, dari data, pola berbeda apa yang menunjukkan aktivitas tertentu.

Selain menjadi metode alternatif untuk pemrograman skenario tersebut, pendekatan tersebut juga memberi Anda kemampuan untuk membuka skenario baru, seperti skenario golf yang mungkin tidak dapat dilakukan berdasarkan pendekatan pemrograman tradisional berbasis aturan.

Dalam pemrograman tradisional, kode Anda dikompilasi ke dalam biner yang biasanya disebut program. Di ML, item yang Anda buat dari data dan label disebut model.

Jadi, jika Anda kembali ke diagram ini:

53ff9e2cb511936e.png

Pertimbangkan hasilnya sebagai model, yang digunakan seperti ini saat runtime:

693430bb4d7fa001.png

Anda meneruskan model ke beberapa data dan model tersebut menggunakan aturan yang disimpulkan dari pelatihan untuk membuat prediksi, seperti, "Data tersebut terlihat seperti berjalan," atau "Data tersebut terlihat seperti bersepeda."

3. Buat model ML pertama Anda

Pertimbangkan sejumlah angka berikut ini. Dapatkah Anda melihat hubungan di antara mereka?

X:

-1

0

1

2

3

4

Anda:

-2

1

4

7

10

13

Saat mengamatinya, Anda mungkin menyadari bahwa nilai X meningkat sebesar 1 saat Anda membaca dari kiri ke kanan dan nilai Y yang terkait meningkat sebesar 3. Anda mungkin berpikir bahwa Y sama dengan 3X plus atau minus. Kemudian, Anda mungkin melihat 0 pada X dan melihat bahwa Y adalah 1, dan Anda menemukan hubungan Y=3X+1.

Itu hampir persis seperti cara Anda menggunakan kode untuk melatih model untuk menemukan pola dalam data!

Sekarang, lihat kode untuk melakukannya.

Bagaimana cara melatih jaringan neural untuk melakukan tugas yang setara? Menggunakan data Dengan memberinya kumpulan X's dan kumpulan Y's, hubungan tersebut dapat mengetahui hubungan di antara keduanya.

Impor

Mulai dengan impor Anda. Di sini, Anda mengimpor TensorFlow dan menyebutnya tf untuk kemudahan penggunaan.

Selanjutnya, impor library yang disebut numpy, yang mewakili data Anda sebagai daftar dengan mudah dan cepat.

Framework untuk menentukan jaringan neural sebagai kumpulan lapisan berurutan disebut keras, jadi impor juga jaringan tersebut.

import tensorflow as tf
import numpy as np
from tensorflow import keras

Menentukan dan mengompilasi jaringan neural

Berikutnya, buat jaringan neural yang paling sederhana. Ini memiliki satu lapisan, lapisan itu memiliki satu neuron, dan bentuk input di dalamnya hanya satu nilai.

model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])

Berikutnya, tulis kode untuk mengompilasi jaringan neural Anda. Saat melakukannya, Anda harus menentukan dua fungsi—loss dan optimizer.

Dalam contoh ini, Anda tahu bahwa hubungan antara angka tersebut adalah Y=3X+1.

Saat komputer mencoba mempelajarinya, komputer dapat menebaknya, mungkin Y=10X+10. Fungsi loss mengukur jawaban yang ditebak berdasarkan jawaban benar yang diketahui dan mengukur seberapa baik atau buruknya jawaban tersebut.

Selanjutnya, model menggunakan fungsi optimizer untuk membuat tebakan lain. Berdasarkan hasil fungsi kerugian, fitur ini akan mencoba meminimalkan kerugian. Pada tahap ini, dapat berupa sesuatu seperti Y=5X+5. Meskipun masih cukup buruk, hasilnya lebih dekat dengan hasil yang benar (kerugiannya lebih rendah).

Model ini mengulanginya untuk jumlah epoch, yang akan segera Anda lihat.

Pertama, berikut cara memberitahukan penggunaan mean_squared_error untuk kerugian dan penurunan gradien stokastik (sgd) untuk pengoptimal. Anda belum perlu memahami rumus matematika untuk matematika tersebut, tetapi Anda dapat melihat perhitungannya.

Seiring waktu, Anda akan mempelajari berbagai fungsi kerugian dan pengoptimal yang sesuai untuk berbagai skenario.

model.compile(optimizer='sgd', loss='mean_squared_error')

Memberikan data

Selanjutnya, berikan beberapa data. Dalam hal ini, Anda mengambil enam variabel X dan enam Y dari sebelumnya. Anda dapat melihat bahwa hubungan antara keduanya adalah Y=3X+1, sehingga X adalah -1, Y adalah -2.

Library python bernama NumPy menyediakan banyak struktur data jenis array untuk melakukan ini. Tentukan nilai sebagai array di NumPy dengan np.array[].

xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
ys = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float)

Sekarang Anda memiliki semua kode yang dibutuhkan untuk menentukan jaringan neural. Langkah berikutnya adalah melatihnya untuk melihat apakah model tersebut dapat menyimpulkan pola di antara angka-angka tersebut dan menggunakannya untuk membuat model.

4. Melatih jaringan neural

Proses pelatihan jaringan neural, yang mempelajari hubungan antara X's dan Y's, ada dalam panggilan model.fit. Di sinilah ia akan melalui loop sebelum membuat tebakan, mengukur seberapa baik atau buruknya (kerugian), atau menggunakan pengoptimal untuk membuat tebakan lain. Hal ini akan dilakukan untuk jumlah iterasi pelatihan yang Anda tentukan. Saat menjalankan kode tersebut, Anda akan melihat kerugian akan dicetak untuk setiap iterasi pelatihan.

model.fit(xs, ys, epochs=500)

Misalnya, Anda dapat melihat bahwa untuk beberapa iterasi pertama, nilai kerugian cukup besar, namun setiap langkah semakin kecil.

f110d5abed07c1b9.png

Seiring berlangsungnya pelatihan, kerugian akan segera menjadi sangat kecil.

81ca5e71298b414b.png

Pada saat pelatihan selesai, kerugian menjadi sangat kecil, menunjukkan bahwa model kita sedang melakukan pekerjaan yang baik dalam menyimpulkan hubungan antara angka-angka.

12b187014b639fd.png

Anda mungkin tidak memerlukan 500 iterasi pelatihan dan dapat bereksperimen dengan jumlah yang berbeda. Seperti yang dapat Anda lihat dari contoh, kerugiannya sangat kecil setelah hanya 50 iterasi pelatihan, sehingga mungkin sudah cukup!

5. Menggunakan model

Anda memiliki model yang telah dilatih untuk mempelajari hubungan antara X dan Y. Anda dapat menggunakan metode model.predict untuk mencari tahu Y untuk X yang sebelumnya tidak diketahui. Misalnya, jika X 10, bagaimana menurut Anda Y? Berikan tebakan sebelum Anda menjalankan kode berikut:

print(model.predict([10.0]))

Anda mungkin sudah berpikir 31 tahun, tapi akhirnya bisa berakhir sedikit. Kira-kira apa penyebabnya?

Jaringan neural menangani probabilitas, sehingga dihitung bahwa terdapat probabilitas yang sangat tinggi bahwa hubungan antara X dan Y adalah Y=3X+1, tetapi tidak dapat mengetahui dengan pasti hanya dengan enam titik data. Hasilnya sangat mendekati 31, tetapi tidak selalu 31.

Saat bekerja dengan jaringan neural, Anda akan melihat pola tersebut berulang. Anda hampir selalu menangani probabilitas, bukan kepastian, dan akan melakukan sedikit coding untuk mengetahui hasilnya berdasarkan probabilitas, terutama terkait klasifikasi.

6. Selamat

Percaya atau tidak, Anda telah membahas sebagian besar konsep dalam ML yang akan digunakan dalam skenario yang jauh lebih kompleks. Anda telah mempelajari cara melatih jaringan neural untuk mengetahui hubungan antara dua kumpulan angka dengan menentukan jaringan. Anda telah menentukan kumpulan lapisan (dalam kasus ini hanya satu lapisan) yang berisi neuron (juga dalam kasus ini, hanya satu), yang kemudian Anda kompilasi dengan fungsi kerugian dan pengoptimal.

Pengumpulan jaringan, fungsi kerugian, dan pengoptimal menangani proses menebak hubungan antara angka-angka, mengukur seberapa baik mereka melakukannya, kemudian membuat parameter baru untuk tebakan baru. Pelajari lebih lanjut di TensorFlow.org.

Pelajari lebih lanjut

Untuk mempelajari cara ML dan TensorFlow dapat membantu model computer vision Anda, lanjutkan ke Mem-build model computer vision dengan TensorFlow.