1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo máy học báo cáo cuối kỳ

24 26 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 1,83 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÁO CÁO MÁY HỌC BÁO CÁO CUỐI KỲ SVTH: PHẠM TRÍ NHÂN MSSV: 16141359 Khoá: 16 Ngành: Công nghệ kỹ thuật Điện tử - Truyền thông Tp. Hồ Chí Minh, tháng 11 năm 2019 2 MỤC LỤC MỤC LỤC .............................................................................................................2 BÀI 1: MẠNG NEURAL.....................................................................................3 BÀI 2: ĐÁNH GIÁ HỆ THỐNG PHÂN LỚP...................................................8 BÀI 3: PHƯƠNG PHÁP PCA...........................................................................13 BÀI 4: NHẬN DIỆN ẢNH BẰNG CNN...........................................................17 BÀI 5: REINFORCEMENT Q-LEARNING...................................................21

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO



BÁO CÁO MÁY HỌC

BÁO CÁO CUỐI KỲ

SVTH: PHẠM TRÍ NHÂN MSSV: 16141359

Khoá: 16 Nga ̀nh: Công nghệ kỹ thuật Điện tử - Truyền thông

Tp Hồ Chí Minh, tháng 11 năm 2019

Trang 2

MỤC LỤC

MỤC LỤC 2

BÀI 1: MẠNG NEURAL 3

BÀI 2: ĐÁNH GIÁ HỆ THỐNG PHÂN LỚP 8

BÀI 3: PHƯƠNG PHÁP PCA 13

BÀI 4: NHẬN DIỆN ẢNH BẰNG CNN 17

BÀI 5: REINFORCEMENT Q-LEARNING 21

Trang 3

BÀI 1: MẠNG NEURAL

1 Vấn đề:

Cần nhận biết 2 loại hoa bằng mạng neural dựa theo 2 đặc trưng của loại hoa đó, dựa theo cấu trúc mạng neural viết chương trình sao cho máy tính có thể nhận biết được và phân loại 2 loại hoa đó

Mạng nơ-ron nhân tạo (Neural Network - NN) là một mô hình lập trình rất đẹp lấy cảm hứng từ mạng nơ-ron thần kinh Kết hợp với các kĩ thuật học sâu (Deep Learning - DL), NN đang trở thành một công cụ rất mạnh mẽ mang lại hiệu quả tốt nhất cho nhiều bài toán khó như nhận dạng ảnh, giọng nói hay xử lý ngôn ngữ tự nhiên Kiến trúc chung của một mạng nơron nhân tạo (NN) gồm 3 thành phần đó là: Input Layer, Hidden Layer và Output Layer

Hình 1 Mô phỏng mạng Neural

Trang 4

Trong đó các Processing Elements (PE) của NN gọi là Nơron, mỗi

Nơron nhận các dữ liệu vào (Inputs) xử lý chúng và cho ra một kết quả (Output)

duy nhất Kết quả xử lý của một Nơron có thể làm Input cho các Nơron khác

- Quá trình xử lý thông tin của một NN:

Hình 2 Sơ đồ khối quá trình xử lý thông tin của một mạng Neural

+ Inputs (dữ liệu vào): Mỗi Input tương ứng với 1 thuộc tính (attribute) của

dữ liệu (patterns)

+ Output (kết quả): Kết quả của một NN là một giải pháp cho một vấn đề

+ Connection Weights (Trọng số liên kết) : Đây là thành phần rất quan trọng

của một NN, nó thể hiện mức độ quan trọng (độ mạnh) của dữ liệu đầu vào đối với

quá trình xử lý thông tin (quá trình chuyển đổi dữ liệu từ Layer này sang layer

khác) Quá trình học (Learning Processing) của NN thực ra là quá trình điều chỉnh

các trọng số (Weight) của các input data để có được kết quả mong muốn

+ Summation Function (Hàm tổng): Tính tổng trọng số của tất cả các input

được đưa vào mỗi Nơron (phần tử xử lý PE) Hàm tổng của một Nơron đối với n

input được tính theo công thức sau:

+ Transfer Function (Hàm chuyển đổi): Hàm tổng (Summation Function)

của một Nơron cho biết khả năng kích hoạt (Activation) của Nơron đó còn gọi là

kích hoạt bên trong (internal activation) Các Nơron này có thể sinh ra một output

hoặc không trong NN (nói cách khác rằng có thể output của 1 Nơron có thể được

chuyển đến layer tiếp trong mạng Nơron hoặc không) Mối quan hệ giữa Internal

Activation và kết quả (output) được thể hiện bằng hàm chuyển đổi (Transfer

Function)

Trang 5

Hình 3 Mối quan hệ giữa việc kích hoạt từ bên trong và kết quả ngõ ra Việc lựa chọn Transfer Function có tác động lớn đến kết quả của NN Hàm chuyển đổi phi tuyến được sử dụng phổ biến trong NN là sigmoid (logical activation) function

2 Phương pháp:

 Cần xác định số lớp của mạng:

 Ở đây ta sử dụng mô hình neural có 1 lớp vào 1 lớp ẩn và 1 lớp ngõ ra

 Tại lớp vào bao gồm 2 nút tương đương với 2 đặc trưng của loại hoa đó

Trang 6

e(p)= abs(o1-d1(p));

 Cuối cùng sau khi training cho máy học đến khi kết quả độ chính xác trả về đạt giá trị là 0.01 (độ chính xác tối thiểu cần để nhận biết đúng 2 loại hoa vì

độ chênh lệch giữa các đặc trưng hay các tham số của hoa có độ chênh lệch

là 0.1) rồi thực hiện chạy code testing để xem kết quả của việc training có cho ra kết quả đúng hay không dựa theo số liệu người dùng chọn:

x1=5.2;

x2=2.7;

3 Kết quả:

Trang 7

Inis Flower Versicolor!

e = 87.3143 acc = 12.6857

Trang 8

BÀI 2: ĐÁNH GIÁ HỆ THỐNG PHÂN LỚP

1 Vấn đề:

Sau khi xây dựng một mô hình nào đó, ta cần phải xét đến viếc đánh giá mô hình đó so với các mô hình tương tự khác có hoạt động như thế nào Những điều chúng ta quan tâm đến một mô hình đó là khả năng hoạt động có chính xác, có nhanh hay ổn định hay không

Có rất nhiều phương pháp để đánh giá một mô hình Ví dụ như Accuracy, Confusion Matrix, ROC curve, Area Under the Curve, Precision and Recall, F1 score, Top R error, etc.,… Trong bài báo cáo này chúng ta sẽ xem xét và chạy mô phỏng các vấn đề liên quan đến Accuracy và Confusion Matrix Đây là 2 phương pháp đơn giản nhất để đánh giá một hệ thống phân lớp

Accuracy đơn giản tính tỉ lệ giữa số điểm được dự đoán đúng và tổng số điểm trong tập dữ liệu kiểm thử

Trong ví dụ này, ta có thể đếm được có 6 điểm dữ liệu được dự đoán đúng trên tổng số 10 điểm Vậy ta kết luận độ chính xác của mô hình là 0.6 (hay 60%)

Để ý rằng đây là bài toán với chỉ 3 class, nên độ chính xác nhỏ nhất đã là khoảng 1/3, khi tất cả các điểm được dự đoán là thuộc vào một class nào đó

from future import print_function

import numpy as np

def acc(y_true, y_pred):

correct = np.sum(y_true == y_pred)

return float(correct)/y_true.shape[ 0 ]

y_true = np.array([ 0 , 0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 , 2 ])

y_pred = np.array([ 0 , 1 , 0 , 2 , 1 , 1 , 0 , 2 , 1 , 2 ])

print( 'accuracy = ' , acc(y_true, y_pred))

accuracy = 0.6

Và đây là cách tính bằng thư viên:

from sklearn.metrics import accuracy_score

print( 'accuracy = ' ,accuracy_score(y_true, y_pred))

accuracy = 0.6

Cách tính sử dụng accuracy như ở trên chỉ cho chúng ta biết được bao nhiêu phần trăm lượng dữ liệu được phân loại đúng mà không chỉ ra được cụ thể mỗi loại được phân loại như thế nào, lớp nào được phân loại đúng nhiều nhất, và dữ liệu thuộc lớp nào thường bị phân loại nhầm vào lớp khác Để có thể đánh giá được

các giá trị này, chúng ta sử dụng một ma trận được gọi là confusion matrix

Trang 9

Về cơ bản, confusion matrix thể hiện có bao nhiêu điểm dữ liệu thực

sự thuộc vào một class, và được dự đoán là rơi vào một class Để hiểu rõ hơn, hãy

xem bảng dưới đây:

2 Total: 10 | Predicted | Predicted | Predicted |

3 | as: 0 | as: 1 | as: 2 |

Ma trận thu được được gọi là confusion matrix Nó là một ma trận vuông

với kích thước mỗi chiều bằng số lượng lớp dữ liệu Giá trị tại hàng thứ i, cột thứ j là số lượng điểm lẽ ra thuộc vào class i nhưng lại được dự đoán là thuộc vào class j Như vậy, nhìn vào hàng thứ nhất (0), ta có thể thấy được rằng trong số bốn điểm thực sự thuộc lớp 0, chỉ có hai điểm được phân loại đúng, hai điểm còn lại bị phân loại nhầm vào lớp 1 và lớp 2

Chú ý: Có một số tài liệu định nghĩa ngược lại, tức giá trị tại cột thứ i, hàng thứ j là số lượng điểm lẽ ra thuộc vào class i nhưng lại được dự đoán là thuộc vào class j Khi đó ta sẽ được confusion matrix là ma trận chuyển vị của confusion matrix như cách tôi đang làm Tôi chọn cách này vì đây chính là cách thư viện sklearn sử dụng

Chúng ta có thể suy ra ngay rằng tổng các phần tử trong toàn ma trận này chính là số điểm trong tập kiểm thử Các phần tử trên đường chéo của ma trận là

số điểm được phân loại đúng của mỗi lớp dữ liệu Từ đây có thể suy

ra accuracy chính bằng tổng các phần tử trên đường chéo chia cho tổng các phần

tử của toàn ma trận Đoạn code dưới đây mô tả cách tính confusion matrix:

12 N = np.unique(y_true).shape[ 0 ] # number of classes

Trang 10

18 cnf_matrix = my_confusion_matrix(y_true, y_pred)

19 print( 'Confusion matrix:' )

ta có thể dùng normalized confuion matrix, tức confusion matrix được chuẩn hoá

Để có normalized confusion matrix, ta lấy mỗi hàng của unnormalized confusion matrix sẽ được chia cho tổng các phần tử trên hàng đó Như vậy, ta có nhận xét rằng tổng các phần tử trên một hàng của normalized confusion matrix luôn bằng 1 Điều này thường không đúng trên mỗi cột Dưới đây là cách tính normalized confusion matrix:

29 normalized_confusion_matrix = cnf_matrix/cnf_matrix.sum(axis = 1 , keepd ims = True)

30 print( \n Confusion matrix (with normalizatrion:)' )

36 from sklearn.metrics import confusion_matrix

37 cnf_matrix = confusion_matrix(y_true, y_pred)

38 print( 'Confusion matrix:' )

39 print(cnf_matrix)

40 Confusion matrix:

41 [[2 1 1]

Trang 11

đã chuẩn hoá mang nhiều thông tin hơn Sự khác nhau được thấy ở ô trên cùng bên trái Lớp dữ liệu 0 được phân loại không thực sự tốt nhưng trong unnormalized confusion matrix, nó vẫn có màu đậm như hai ô còn lại trên đường chéo chính

3 Kết quả:

Trang 13

BÀI 3: PHƯƠNG PHÁP PCA

1 Vấn đề:

PCA (Principle Components Analysic) là một thuật toán dưoc sử dụng để tạo ra một änh mới từ ảnh ban đầu Anh mới này có kích thước nhỏ hơn nhiều so với ảnh ban dầu nhưng vân mang những dặc trưng cơ bản nhất của ảnh cần nhận dạng PCA không cấn quan tâm đến việc tìm ra các đặc điểm cụ thể của thực thể cần nhận dạng và mối quan hệ giữa các đặc điểm đó Tất cả các chi tiết đó đều được thể hiện ở ảnh mới dược tạo ra từ PCA Về bàn chất, PCA tìm ra một không gian mới theo hướng biến thiên mạnh nhất của một tập hợp các vector trong không gian cho trước Trong không gian mới, người ta hi vọng rằng việc phân loại sẽ mang lại kết quả tốt hơn so với không gian ban đầu

2 Phương pháp:

Cấu trúc của hệ thống nhận dạng mặt người được thể hiện như sau:

Hình 5 Cấu trúc tổng quát của hệ thống nhận dạng khuôn mặt người

Face detection (Phát hiện khuôn mặt):

Ảnh đầu vào là ảnh chứa đối tượng gồm một hoặc nhiều người, với gương mặt chinh diện hoặc tương đối chinh diện để hệ thống có thể phát hiện Sau khi phát hiện được ví trí và kích thước của một hoặc nhiều khuôn mặt, những khuôn hình chứa mặt sẽ được cắt ra để tiến hanh quá trình tiền xử lý

Preprocessing (Tiền xử lý):

Khối tiền xử lý sẽ xử lý những khuôn ảnh chứa mặt,chuẩn hóa kích thước ảnh trong cơ sở dữ liệu và ảnh cần nhận dạng cùng một kích thước đã định trước, làm giảm nhiễu, điều chỉnh độ sáng tối làm tăng chất lượng ảnh thuận tiện cho quá trình trích thuộc tính đc chinh xác và dễ dàng hơn

Trang 14

Feature extraction (Trích chọn đặc trưng):

Tìm ra các đặc trưng chính của ảnh mặt, từ các đặc trưng này hình thành các vector đặc trưng,các vector này sẽ được sử dụng để đối sánh sự giống nhau giữa ảnh mặt cần tìm và ảnh mặt trong CSDL

Recognition (Nhận dạng):

Bước này thực hiện việc so sánh giữa cáccvector đặc trưng để chọn ra độ tương tự giữa ảnh cần tìm và ảnh trong CSDL

Trang 15

3 Kết quả:

Ta thấy sai số nhỏ nhất là 0,000993s với tốc độ học rất nhanh Ngoài ra, chỉ cần học 250 là xong

Trang 16

Đây là kết quả trả về khi nhận diện đúng

Khi không nằm trong tập tin được học thì cho ra kết quả là không xác định

Trang 17

BÀI 4: NHẬN DIỆN ẢNH BẰNG CNN

1 Vấn đề:

Convolutional Neural Networks (CNN) là một trong những mô hình deep learning phổ biến nhất và có ảnh hưởng nhiều nhất trong cộng đồng Computer Vision CNN được dùng trong trong nhiều bài toán như nhân dạng ảnh, phân tích video, ảnh MRI, hoặc cho bài các bài của lĩnh vự xử lý ngôn ngữ tự nhiên,và hầu hết đều giải quyết tốt các bài toán này

2 Phương pháp:

Chúng ta tạo ra các tệp hình ảnh về các đối tượng cụ thể sao đó cho máy tự động quét xem tất cả các tệp hình ảnh đó Từ đó, máy tính sẽ chọn ra hình ảnh để học và phân tích các đặc điểm của hình ảnh như hình dạng, độ sáng, …

Ta sử dụng mạng CNN với các thông số sau

Hàm model = Sequential(): để nói cho keras là ta sẽ xếp các layer lên nhau

để tạo model Ví dụ input -> CONV -> POOL -> CONV -> POOL -> FLATTEN -> FC -> OUTPUT

Lớp Convolutional đầu tiên với 32 kernel, với kích thước 3*3, sử dụng hàm kích hoạt relu

Thêm 1 hàm Convolutional với các thông số tương tự

Hàm MaxPooling2D với kích thước hàm pool 2*2

Hàm Dropout với xác suất là 25%

Hai Lớp Convolutional tiếp theo với 64 kernel, với kích thước 3*3, sử dụng hàm kích hoạt relu

Hàm Flatten dùng để chuyển tensor sang vector

[INFO] evaluating network

precision recall f1-score support

Apple Red Yellow 2 1.00 1.00 1.00 136

Trang 18

 Độ chính xác cao với thông số chính xác là 99,74%

 Giá trị chính xác đều đạt mức 1

 Giá trị sai số khi training xong là 1.5780e-05 cho thấy giá trị sai số rất nhỏ Kết quả:

Trang 19

 Tốc độ nhận biết nhanh cứ mỗi 0.005~0.008 giây cho mỗi hình

 Nhận biết đúng hết 5 hình trái Banana, Kaki, Walnut

Trang 20

 Các trái còn lại đều nhận biết sai nhất là trái Chestnut là không nhận ra hình nào, trái apple red yellow nhận biết đúng 1 hình

 Tăng chu kỳ học có thể học được đúng hơn nhưng tăng chu kỳ học có thể dẫn đến học sai như lần thứ 18, hệ thống kh6ong học được

 Hệ thống tuy cho ra độ chính xác cao nhưng khi cho chạy tập test thử thì không nhận biết đúng so với kết quả train cho thấy hệ thống chưa đủ tin cậy trong việc học và nhận biết hình ảnh, với các loại trái cây có kiểu dáng và hình dạng gần như nhau thì hệ thống rất dễ nhận biết sai

Hệ thống tuy cho ra độ chính xác cao nhưng khi cho chạy tập test thử thì không nhận biết đúng so với kết quả train cho thấy hệ thống chưa đủ tin cậy trong việc học và nhận biết hình ảnh, với các loại trái cây có kiểu dáng và hình dạng gần như nhau thì hệ thống rất dễ nhận biết sai

Trang 21

BÀI 5: REINFORCEMENT Q-LEARNING

1 Vấn đề:

Liên quan đến RL thì chúng ta không thể không nói đến lĩnh vực game và robot Học tăng cường (Reinforcement Learning-RL) là một trong ba kiểu học máy chính bên cạnh học giám sát (Supervised Learning) và học không giám sát (Unsupervised Learning) Bản chất của RL là trial-and-error, nghĩa là thử đi thử lại và rút ra kinh nghiệm sau mỗi lần thử như vậy Gần đây, RL đã đạt được những thành tựu đáng kể khi các thuật toán của DeepMind (AlphaGo, AlphaZero, AlphaStar, ) đã chiến thắng áp đảo các tuyển thủ thế giới trong những trò chơi

mà con người đã từng nghĩ rằng máy móc sẽ không bao giờ có thể vượt mặt như

cờ vây hay StarCraft

Nói về robot, thì RL hỗ trợ rất nhiều trong lĩnh vực này Ví dụ, để cho một chú robot có thể biết đường thoát khỏi một mê cung với con đường nhanh nhất thì

RL là phương pháp tốt nhất để dạy cho chú robot này Lại nói về RL thì gồm 7

khái niệm chính: Agent, Environment, State, Action, Reward, Episode, Policy

2 Phương pháp:

Để dễ hiểu hơn, mình sẽ lấy ví dụ về một con robot tìm đường như hình dưới:

Nhiệm vụ của con robot - Agent - là đi đến ô đích màu xanh, tránh ô phạt màu đỏ và ô xám là chướng ngại vật không được phép đi vào Agent tương tác với Environment bằng các Actions trái/ phải/ lên/ xuống Sau mỗi action, environment trả lại cho agent một State (ở ví dụ này là vị trí của robot)

và Reward tương ứng với state đó (+1 nếu đi vào xanh, -1 nếu đi vào ô đỏ và 0 nếu

ở ô trắng) Khi agent đến ô xanh hoặc đỏ trò chơi kết thúc; một loạt các tương tác giữa agent và environment từ thời điểm bắt đầu đến lúc này được gọi là một Episode Trong một episode, agent sẽ cố gắng chọn ra các actions tối ưu để

Trang 22

tối đa hóa reward nhận được sau mỗi episode Cách mà agent chọn những actions

đó là Policy; ví dụ: "đi ngẫu nhiên", "đi men theo rìa" hoặc "hướng về ô đích" Có thể thấy policy cũng có policy này và policy kia; mục đích của RL là tìm ra policy tốt nhất Hình dưới đây mô tả tương tác giữa Agent - Environment:

Ngày đăng: 13/12/2021, 11:45

TỪ KHÓA LIÊN QUAN

w