Hướng dẫn train trong python

Trong bài viết này, mình sẽ giới thiệu các khái niệm cơ bản, và từng bước tạo ra một model machine learning đơn giản nhé. Bắt đầu nào !

1. Machine learning là gì ?

Machine learning là lĩnh vực nhỏ của khoa học máy tính, nó có khả năng tự học hỏi dựa trên dữ liệu đưa vào mà không cần phải lập trình cụ thể.

Thông thường, khi giải quyết một bài toán theo cách truyền thống thì cần phải xác định được các quy tắc, cách giải quyết vấn đề (lựa chọn thuật toán) và từ đó viết code.

Nhưng với machine learning thì khác, thay vì phải xác định các quy tắc, thuật toán thì chúng ta cung cấp các câu trả lời (labels) cho dữ liệu đầu vào (data). Dựa vào đó, chương trình sẽ học và đưa ra cách giải quyết cho bài toán.

Trong machine learning, thứ bạn tạo ra từ data và labels được gọi là model. Tóm lại, chúng ta có các bước để xây dựng dưới đây.

2. Xây dựng model cơ bản

Bây giờ chúng ta sẽ từng bước xây dựng một model cơ bản.

Công cụ: Python, Tensorflow, Numpy.

Tensorflow: là thư viện mã nguồn mở được phát triển bởi Google, được sử dụng cho việc tính toán số học sử dụng đồ thị luồng dữ liệu.

Numpy: là thư viện hỗ trợ cho việc tính toán các mảng nhiều chiều. Numpy cực kì hữu ích khi thực hiện các hàm liên quan đến Đại số tuyến tính.

Tuy nhiên, đối với người mới tìm hiểu thì việc cài đặt các thư viện khá là khó khăn. Có thể thay thế bằng Google Colaboratory, mọi thứ đều có sẵn, rất thích hợp cho người đang tìm hiểu về machine learning.

Cách sử dụng Google Colaboratory

Bước 1: Đăng nhập vào Google Drive.

Bước 2: Bấm vào nút Mới.

Bước 3: Với người mới sử dụng thì chưa có tải xuống Google Colaboratory thì làm như hình.

Bước 4: Lúc này một cái bảng hiện ra, tìm kiếm Colaboratory sau đó tải về thôi.

Bài toán: Cho bảng số liệu như sau:

X

-3

-2

-1

0

1

2

3

y

-6

-4

-2

0

2

4

6

Quan sát bảng số liệu, bạn có thể thấy được mối quan hệ giữa y và x là y = 2x đúng không. Câu hỏi đặt ra là có thể dự đoán được những giá trị tiếp theo không ?

Ở phía trên mình đã giới thiệu, với machine learning, chỉ cần có dữ liệu đầu vào (data) và các giá trị đầu ra (labels) của nó thì có thể xây dựng được các quy tắc, các chuẩn để dự đoán những giá trị tiếp theo.

Bắt đầu code nào !

Đầu tiên chúng ta cần import các thư viện cần thiết vào.

Imports

Việc sử dụng Google colaboratory thì đã có sẵn môi trường Python và Tensorflow để sử dụng rồi, chúng ta không cần phải cài đặt nhiều.

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

Keras: Framework để xác định mạng neural như là một chuỗi các layers.

Xác định và biên dịch mạng neural.

Bây giờ chúng ta sẽ xây dựng một mạng neural đơn giản nhất. Mạng neural này có 1 layer và trong layer đó có 1 neuron.

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

Tiếp theo chúng ta sẽ viết code để biên dịch mạng neural. Chúng ta cần 2 functions để làm việc này, đó là loss và optimizer.

loss: dùng để đo độ chính xác của phương trình dự đoán (ví dụ y = 4x + 1).

optimizer: đưa ra phương trình dự đoán, dựa trên giá trị mà function loss đưa ra, function optimizer sẽ đưa ra câu trả lời sao cho giá trị của function loss nhỏ nhất.

Với Keras thì 2 functions này đã có sẵn, chỉ việc gọi chúng và sử dụng thôi.

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

Nhập dữ liệu

Tiếp theo là nhiệm vụ của thư viện numpy.

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

Việc xác định mạng neural coi như đã xong. Bước tiếp theo là train mạng neural để tạo ra model.

Training mạng neural

Quá trình này dùng để tìm kiếm mối quan hệ giữa x và y, đưa ra những dự đoán (optimizer) và đánh giá độ chính xác (loss), lặp đi lặp lại với số lần xác định (epochs).

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

Ở những lần lặp đầu tiên thì giá trị loss còn khá cao, tức là phương trình dự đoán mà function optimizer chưa gần với phương trình chính xác. Sau nhiều lần lặp thì giá trị loss giảm dần, càng lúc càng về 0. Tức là model của chúng ta đã dự đoán đúng mối quan hệ giữa x và y.

Sau một vài lần lặp, giá trị loss giảm dần cho đến gần bằng 0.

Với bài toán này thì số epochs 500 là quá nhiều, không cần thiết. Khi mà chỉ cần khoảng 70 epochs là model của chúng ta đã dự đoán chính xác rồi. 

Sử dụng model.

print(model.predict([10.0]))

Kết quả là

Có thể thấy kết quả gần bằng với số 20. 

Tóm tắt

Có những khái niệm cơ bản cần nắm khi tìm hiểu về Machine learning.

Data: dữ liệu đầu vào.

Label: đầu ra (hay còn gọi là nhãn).

Model: được tạo ra từ data và label, sử dụng model để dự đoán những data khác.

Thư viện numpy: một thư viện toán học phổ biến và mạnh mẽ của Python.

Thư viện tensorflow: thư viện mã nguồn mở hỗ trợ cho việc tính toán số học dựa trên biểu đồ mô tả sự thay đổi của dữ liệu.

Loss: hàm đánh giá độ chính xác của giá trị dự đoán.

Optimizer: hàm đưa ra giá trị dự đoán sao cho giá trị của hàm loss là nhỏ nhất.

Epochs: Số lần lặp khi train model.

Neural network: là một hệ thống tính toán lấy cảm hứng từ sự hoạt động của các neuron trong hệ thần kinh.

Trên đây là những khái niệm cơ bản về Machine learning, hy vọng sẽ giúp ích cho những bạn mới tìm hiểu về lĩnh vực này.