Convolution Neutral Network (CNN)

Một phần của tài liệu NGHIÊN CỨU CÔNG NGHỆ HỖ TRỢ LÁI TỰ ĐỘNG TRÊN XE ĐIỆN CỦA TESLA (Trang 28 - 37)

Mạng nơ-ron Convolutional (CNN) là một thuật toán Học sâu có thể lấy hình ảnh đầu vào, gán tầm quan trọng (trọng số và thành kiến có thể học được) cho các khía cạnh hoặc đối tượng khác nhau trong hình ảnh và có thể phân biệt cái này với cái khác. Yêu cầu xử lý trước trong CNN thấp hơn nhiều so với các thuật toán phân loại khác. Trong khi ở các phương pháp nguyên thủy, bộ lọc được thiết kế thủ công, với đủ đào tạo, CNN có khả năng tìm hiểu các bộ lọc hoặc đặc điểm này.Điểm đột phá của CNN là các tính năng được học tự động từ các ví dụ đào tạo.

CNN được sử dụng để đánh giá đầu vào thông qua các biến đổi. Đầu vào được biến đổi với một bộ lọc. Sự tích chập này dẫn đến việc mạng phát hiện

ra các cạnh và các tính năng cấp thấp hơn trong các lớp trước đó và các tính năng phức tạp hơn ở các lớp sâu hơn trong mạng. CNN được sử dụng kết hợp với các lớp gộp và chúng thường có các lớp được kết nối đầy đủ ở cuối. Tiến hành truyền về phía trước như trong mạng nơ-ron vani và giảm thiểu hàm mất mát thông qua nhân giống ngược để đào tạo CNN.[5]

Tích chập được sử dụng đầu tiên trong xử lý tín hiệu số (Signal processing). Nhờ vào nguyên lý biển đoi thông tin, các nhà khoa học đã áp dụng kĩ thuật này vào xử lý ảnh và video số. Để dễ hình dung, ta có the xem tích chập như một cửa so trượt (sliding window) åp dặt lên một ma trận. Bạn có the theo dõi cơ che của tích chập qua hình minh họa bên dưới.

Hình 2.2: Minh họa cách tích chập.

Ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của ma trận tương đương với một điểm ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale thì giá trị biến thiên từ 0 đến 255). Sliding window còn có tên gọi là kernel, filter hay feature detector. Ở đây, ta dùng một ma trận filter 3x3 nhân từng thành phần tương ứng (element-wise) với ma trận ảnh bên trái. Giá trị đầu ra do tích của các thành phần này cộng lại. Kết quả của tích chập là một ma trận (convoled feature) sinh ra từ việc trượt ma trận filter và thực hiện tích chập cùng lúc lên toàn bộ ma trận ảnh bên trái. Dưới đây là một vài ví dụ của phép toán tích chập.

Hình 2.3: Hình ảnh trước khi tích chập.

Ta có thể phát hiện mép biên bằng cách lấy vi phân (độ ly biệt) giữa các điểm ảnh gần nhau.

Hình 2.4: Ảnh phát hiện biên sau khi tích chập

Tất cả các mô hình CNN đều tuân theo một kiến trúc tương tự. CNN đơn giản là một chuỗi các lớp xếp chồng lên nhau và mỗi lớp của CNN sau khi kích hoạt sẽ cho ra một một kết quả trừu tượng cho các lớp tiếp theo. Mỗi lớp kế tiếp là kết quả của lớp trước đó .Kiến trúc của CNN được xây dựng từ ba loại lớp chính : Lớp tích chập (convolution layer), Lớp Phân

chia(pooling layer) và Lớp Kết nối Hoàn toàn (Fully-Connected Layer). Các lớp này còn được gọi là Lớp ẩn. Các lớp này sẽ được xếp chồng lên nhau để tạo thành một kiến trúc CNN hoàn chỉnh.

Hình 2.5: Cấu trúc mạng CNN

a) Convolution Layer

Đây là một lớp cực kỳ quan trọng trong CNN. Ở lớp này mọi phép tính toán sẽ được thực hiện, các phép tính toán này được gọi là “tích chập”.Tích chập là một phép toán tuyến tính trên hai hàm để tạo ra một hàm thứ ba biểu thị cách hình dạng của hàm này được sửa đổi bởi hàm kia. Hai chức năng đầu vào là một dữ liệu đầu vào và một mảng nhân tương quan (được gọi là bộ lọc). Cả hai chúng được kết hợp để tạo ra một đầu ra (chức năng thứ ba) thông qua một phép toán tương quan chéo. Ví dụ như :khi ta xét một hình ảnh.

Bộ lọc nhỏ hơn dữ liệu đầu vào. Đầu tiên, nó nằm ở góc trên bên trái của mảng đầu vào. Sau đó, nó trượt qua mảng đầu vào, cả từ trái sang phải và từ trên xuống dưới. Mỗi khi bộ lọc trượt đến một vị trí trên mảng đầu vào, mảng con đầu vào chứa cửa sổ đó và mảng hạt nhân sẽ được nhân lên (tính theo phần tử) và mảng kết quả được tổng hợp mang lại một giá trị vô hướng duy nhất. Khi bộ lọc được áp dụng nhiều lần cho mảng đầu vào, kết quả là một mảng hai chiều các giá trị đầu ra hiển thị một bộ lọc đầu vào. Như vậy, mảng đầu ra hai chiều từ hoạt động này được gọi là “bản đồ đặc trưng”.[6]

Hình 2.6: Dữ liệu đầu vào, bộ lọc và kết quả lớp tích chập.

Việc sử dụng bộ lọc nhỏ hơn dữ liệu đầu vào là có chủ đích vì nó cho phép cùng một bộ lọc (tập trọng số) được nhân với mảng đầu vào nhiều lần tại các điểm khác nhau trên đầu vào. Cụ thể, bộ lọc được áp dụng một cách có hệ thống cho từng phần chồng chéo của bản vá có kích thước bộ lọc của dữ liệu đầu vào, từ trái sang phải, từ trên xuống dưới. Nếu bộ lọc được thiết kế để phát hiện một loại tính năng cụ thể trong đầu vào, thì việc áp dụng bộ lọc đó một cách hệ thống trên toàn bộ hình ảnh đầu vào sẽ cho phép bộ lọc có cơ hội khám phá bất kỳ vị trí nào trong hình ảnh. Khả năng này thường được gọi là bất biến dịch. Mối quan tâm chung đến việc liệu đối tượng địa lý có hiện diện hay không thay vì nơi nó có mặt.

Hình 2.7: Phép toán tích chập trong CNN

Trong đó I là ma trận đầu vào K là ma trận một nhân.

I*K là ma trận đầu ra ( là ma trận dầu vào của phép toán tích chập cho lớp tiếp theo)

Hình 2.8: Chức năng kích hoạt

Các hàm kích hoạt là các phương trình toán học xác định đầu ra của mạng nơ-ron. Hàm được gắn với mỗi nơ-ron trong mạng và xác định xem nó có nên được kích hoạt (“kích hoạt”) hay không, dựa trên việc đầu vào của mỗi nơ-ron có liên quan đến dự đoán của mô hình hay không. Chúng giúp loại bỏ nhiễu bất thường và chuyển từ mạng tuyến tính sang mạng phi tuyến tính. Các chức năng kích hoạt cũng giúp chuẩn hóa đầu ra của mỗi nơ-ron thành phạm vi từ 0 đến 1 hoặc từ -1 đến 1 hoặc phạm vi khác.

Sau mỗi lớp chập, thường áp dụng chức năng kích hoạt. Nếu chức năng kích hoạt không được áp dụng, vấn đề là Mạng thần kinh sẽ hoạt động giống như một nhận thức đơn lẻ, bởi vì tổng của tất cả các lớp vẫn sẽ là một mạng tuyến tính, có nghĩa là đầu ra có thể được tính là kết hợp tuyến tính của các đầu ra . Một phương trình tuyến tính rất dễ giải nhưng chúng bị hạn chế về độ phức tạp và có ít sức mạnh hơn để học các ánh xạ hàm phức tạp từ dữ liệu. Một Mạng Nơ-ron không có chức năng kích hoạt sẽ đơn giản là một mô hình hồi quy tuyến tính, mô hình này bị hạn chế về sức mạnh và hầu hết các trường hợp đều không hoạt động tốt. Muốn mạng nơ-ron không chỉ học và tính toán một hàm tuyến tính mà còn là một thứ phức tạp hơn thế. Vì vậy, một hàm phi tuyến tính sẽ giúp điều đó. Các loại chức năng kích hoạt phổ biến nhất như Sigmoid, Tanh, ReLU.

 Hàm kích hoạt Sigmoid là một hàm kích hoạt có dạng f (x) = 1 / (1 + exp (-x)). Phạm vi của nó nằm trong khoảng từ 0 đến 1. Nó là một đường

cong có hình dạng. Nó dễ hiểu và dễ áp dụng nhưng nó có những lý do chính khiến nó trở nên phổ biến là vấn đề gradient biến mất, đầu ra của nó không được căn giữa (giữa 0 và 1) khiến việc tối ưu hóa khó hơn, cần thời gian để hội tụ.

 Tanh của toán học là f (x) = (1 - exp (-2x)) / (1 + exp (-2x)). Đầu ra của nó là 0 căn giữa (giữa -1 và 1) (21). Do đó, việc tối ưu hóa dễ dàng hơn nhưng vẫn gặp phải vấn đề về độ dốc biến mất.

 ReLU (Đơn vị tuyến tính được chỉnh lưu) đã trở nên rất phổ biến trong vài năm qua. Gần đây nó đã được chứng minh rằng nó đã cải thiện sáu lần về sự hội tụ từ chức năng Tánh. Nó chỉ là f (x) = max (0, x), tức là nếu x <0, f (x) = 0 và nếu x> = 0, f (x) = x. Do đó, khi nhìn vào dạng toán của hàm này, chúng ta có thể thấy rằng nó rất đơn giản và hiệu quả. Rất nhiều lần trong Học máy và khoa học máy tính, nhận thấy rằng hầu hết các kỹ thuật và phương pháp đơn giản và nhất quán chỉ được ưu tiên và tốt nhất. Do đó, nó tránh và khắc phục vấn đề gradient biến mất. Hiện nay, hầu hết tất cả các mô hình học sâu đều sử dụng ReLU. Nhưng hạn chế của nó là nó phải được sử dụng trong các lớp ẩn của mô hình mạng nơ-ron.[6]

b) Stride và Padding

Stride là số lượng pixel thay đổi trên ma trận đầu vào. nếu sải chân là một thì điều đó có nghĩa là chúng ta di chuyển các bộ lọc đến một pixel tại một thời điểm từ trái sang phải và từ trên xuống dưới. Nếu khoảng cách là hai, điều đó có nghĩa là chúng tôi di chuyển các bộ lọc sang hai pixel. Có hai loại kết quả đối với hoạt động - một trong đó đối tượng địa lý được biến đổi bị giảm về kích thước so với đầu vào và loại còn lại trong đó kích thước được tăng lên hoặc giữ nguyên.[3]

Nếu cạnh của mảng đầu vào bao gồm một số thông tin cần thiết. Chúng ta nên áp dụng Same Padding để giữ cho kích thước của mảng đầu ra bằng hoặc lớn hơn kích thước của mảng đầu vào. Mặt khác, chúng ta nên áp dụng

Valid Padding để loại bỏ những thứ không cần thiết trên cạnh của mảng đầu vào. Phần đệm hợp lệ nghĩa là không có phần đệm.

Hình 2.9: Áp dụng padding cho ma trận đầu vào.

c) Pooling Layer- Lớp gộp

Tương tự như Lớp Convolution, Lớp Nhóm gộp có trách nhiệm giảm kích thước không gian của đối tượng tích hợp. Điều này là để giảm sức mạnh tính toán cần thiết để xử lý dữ liệu thông qua việc giảm kích thước. Giảm kích thước giúp giảm khối lượng được tính toán và trích xuất các đối tượng địa lý cấp thấp từ các pixel lân cận[3]. Hơn nữa, nó rất hữu ích để trích xuất các đặc trưng chủ đạo là bất biến xoay và vị trí, do đó duy trì quá trình huấn luyện mô hình một cách hiệu quả.

Có hai loại Tổng hợp: Tổng hợp tối đa và Tổng hợp trung bình. Max Pooling trả về giá trị lớn nhất từ phần hình ảnh được bao phủ bởi hạt nhân. Mặt khác, Average Pooling trả về giá trị trung bình của tất cả các giá trị từ phần hình ảnh được bao phủ bởi kernel.

Max Pooling trích xuất các tính năng quan trọng nhất như các cạnh. Mặt khác, tính năng Average Pooling trích xuất rất mượt mà. Do đó, nó phụ thuộc vào loại tập dữ liệu để chọn Tổng hợp tối đa hoặc Tổng hợp trung bình.

Trong kiến trúc CNN, Pooling thường được thực hiện với cửa sổ 2x2, bước 2 và không có padding.[5]

d) Fully-Connected layer - Lớp được kết nối đầy đủ

Thêm Lớp được kết nối đầy đủ là một cách rẻ để học các kết hợp phi tuyến tính của các đối tượng cấp cao như được biểu thị bằng đầu ra của lớp phức hợp. Lớp được kết nối đầy đủ đang học một hàm có thể phi tuyến tính trong không gian đó. Để phân loại hình ảnh, chúng ta phải chuyển đổi bản đồ đối tượng thành một dạng phù hợp cho Nhận thức Đa cấp. Do đó, chúng ta sẽ làm phẳng hình ảnh thành một vector cột. Đầu ra được vỗ béo được cung cấp cho một mạng nơ-ron truyền về phía trước và nhân giống ngược được áp dụng cho mọi quá trình đào tạo lặp lại. Qua một loạt các kỷ nguyên, mô hình có thể phân biệt giữa các tính năng thống trị và một số tính năng cấp thấp nhất định trong hình ảnh và phân loại chúng bằng cách sử dụng chức năng Softmax hoặc chức năng Sigmoid. Khi chúng ta muốn phân loại nhiều lớp (nhiều hơn hai), chúng ta phải sử dụng hàm Softmax. Mặt khác, chúng ta chỉ sử dụng hàm Sigmoid để phân loại hai lớp.[5]

Hình 2.11: Mạng thần kinh sâu phân loại nhiêu lớp

Một phần của tài liệu NGHIÊN CỨU CÔNG NGHỆ HỖ TRỢ LÁI TỰ ĐỘNG TRÊN XE ĐIỆN CỦA TESLA (Trang 28 - 37)