Posts

Inception modules

Image
Nếu bạn là một người thường xuyên cập nhật các công nghệ AI, chắc hẳn bạn đã biết rằng Google vừa công bố một mô hình với tên gọi Inception v3 với Tensorflow.     Bạn có thể sử dụng mô hình này bằng cách train lại những layer cuối tùy thuộc vào yêu cầu bài toán phân loại của bạn. Nếu bạn thực sự hứng thú với việc này, hãy xem bài hướng dẫn rất thú vị sau của Siraj Raval. Tên gọi Inception v3 trùng với tên module Inception mà nó sử dụng, với những mô hình nhỏ hơn bên trong mô hình lớn hơn. Một cấu trúc Inception giống với nó được sử dụng trong mô hình GoogleLeNet năm 2014:
    Trong bài viết này, chúng ta sẽ bàn luận kỹ hơn về Inception modules, giải thích chi tiết hơn theo như bài báo gốc: "Going Deeper with Convolutions". Bài viết này đòi hỏi bạn phải có nền tảng hiểu biết cơ bản về mạng neural tích chập. Nếu không, chúng tôi khuyến khích bạn hãy đọc kỹ chương 9 của cuốn sách Deep Learning trước khi quay lại bài viết này. Inception modules là gì ?     Như một điều hiển…

NLP - Recurrent Neural Network

Image
Nội dung bài viết được tham khảo và dịch lại từ trang blog WILDML.
    Trong bài viết trước, tôi đã giới thiệu với bạn đọc về mô hình ngôn ngữ. Ta đã biết ứng dụng của mô hình ngôn ngữ gồm 2 dạng. Một là đánh giá độ chính xác của một câu dựa theo mức độ tương tự của chúng trên thực tế. Việc đánh giá này giúp ta ước lượng được độ chính xác của văn phạm lẫn ngữ nghĩa của một câu. Những mô hình này thường được ứng dụng trong các hệ thống dịch máy (Machine Translation). Hai là tự động sinh văn bản. Ví dụ huấn luyện mô hình với các tác phẩm của Shakespeare có thể cho phép ta sinh ra các câu từ tựa như cách Shakeapeare viết. Ngoài ra, bạn đọc có thể tham khảo thêm bài viết thú vị này của Andrej Karpathy về khả năng của các mô hình ngôn ngữ mức độ từ vựng.

    Trong bài viết này, tôi sẽ trình bày về mô hình ngôn ngữ dựa trên mạng nơ-ron hồi quy (RNN - Recurrent Neural Network), một thuật toán được chú ý rất nhiều trong thời gian gần đây bởi các kết quả tốt thu được trong lĩnh vực xử lý ngôn …

NLP - Mô hình ngôn ngữ

Xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP) là một nhánh của trí tuệ nhân tạo, tập trung vào các ứng dụng trên ngôn ngữ của con người. Trong trí tuệ nhân tạo thì xử lý ngôn ngữ tự nhiên là một trong những phần khó nhất vì nó liên quan đến việc phải hiểu ý nghĩa ngôn ngữ - công cụ hoàn hảo nhất của tư duy và giao tiếp (Theo wikipedia).     Trong series các bài viết về NLP này, tôi sẽ giới thiệu cho bạn đọc những kiến thức cơ bản nhất trong lĩnh vực xử lý ngôn ngữ tự nhiên bao gồm mô hình ngôn ngữ, Recurrent Neural Networks (RNN), Long Short-Term Memory (LSTM), Named Entity Recognition (NER). Trong đó trọng tâm chính của series là RNN, LSTM và NER.     Trong bài mở đầu này, chúng ta sẽ bước đầu làm quen với khái niệm mô hình ngôn ngữ và mô hình N-gram. 1. Mô hình ngôn ngữ     Mô hình ngôn ngữ là một phân bố xác suất của một đoạn văn bản trên một tập dữ liệu văn bản lớn. Ví dụ, một mô hình ngôn ngữ dựa trên tập dữ liệu về giáo dục thì xác suất của câu "hôm nay c…

Intersection over Union (IoU) cho object detection

Image
Nếu bạn từng đọc những tài liệu liên quan đến Object detection, ắt hẳn bạn đã bắt gặp khái niệm Intersection over Union (IoU). Hôm nay chúng ta sẽ cùng tìm hiểu thêm về nó.
    Bài viết này được lược dịch từ blog post của  Adrian Rosebrock. Khuyến khích bạn nên đọc bài gốc để ủng hộ và đặt câu hỏi (nếu muốn) cho tác giả.


INTERSECTION OVER UNION (IOU) LÀ GÌ?
   (Đầu tiên, Intersection là phần Giao, trong khi Union là phần ...Hợp, nên trong bài viết này sẽ không dịch khái niệm IoU sang tiếng Việt, mong các bạn thông cảm!)
   Intersection over Union là chỉ số đánh giá được sử dụng để đo độ chính xác của Object detector trên tập dữ liệu cụ thể. Chúng ta hay gặp chỉ số này trong các Object Detection Challenge, dạng như PASCAL VOC challenge.
    Bạn sẽ thường thấy IoU được sử dụng để đánh giá performance của các bộ object detector HOG + Linear SVM và Convolutional Neural Network (R-CNN, FasterR-CNN, YOLO, v.v...). Tuy nhiên hãy ghi nhớ rằng đối với IoU thì sử dụng thuật toán nào để đưa ra…

YOLO: You Only Look Once

Image
“You only live once, but if you do it right, once is enough.”
― Mae West

    Sự phát triển của mạng neural đang dần làm hiện thực hoá khái niệm chúng ta vẫn thường gọi là Computer VisionThị giác máy tính. Tuy nhiên, tại thời điểm ban đầu, việc sử dụng Neural Network vẫn còn gặp nhiều khó khăn. Khi bạn muốn phát hiện ra object trong một bức ảnh, sau đó đánh nhãn cho object đó, các phương pháp lúc bấy giờ quá chậm để phục vụ trong real-time, hoặc đòi hỏi thiết bị mạnh mẽ, đắt đỏ...     ... cho đến khi YOLO ra đời. YOLO và sau này là YOLOv2 có khả năng gán nhãn cho toàn bộ object trong khung hình với chỉ duy nhất một operation. Có thể nói YOLO đã xây dựng một hướng tiếp cận đầu tiên giúp đưa Object detection thực sự khả thi trong cuộc sống.

You only look once, but if your network does it right, once is enough.


YOLO - YOU ONLY LOOK ONCE

    Original paper: https://arxiv.org/abs/1506.02640
    Những lợi thế của YOLO :
"Hiểu" được khái quát về đại diện của mỗi đối tượng. Qua đó có…

Cơ bản về Backpropagation

Image
Nội dung bài viết này được tham khảo chủ yếu từ: https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/backpropagation.html
1. Giới thiệu     Backpropagation (Truyền ngược) là một thuật toán mà ta rất hay gặp trong các mô hình mạng học sâu (Deep Learning), nó tính toán đạo hàm thành phần phần trên các nút của mô hình (Ví dụ: Convnet, Neural Network). Các đạo hàm thành phần này được sử dụng trong suốt quá trình huấn luyện mạng. Để hiểu rõ hơn các định nghĩa và các cơ chế đi kèm, bạn đọc có thể tham khảo tại: https://en.wikipedia.org/wiki/Backpropagation. Trong bài viết này, chúng ta sẽ cùng nhau xem xét cách thực hiện backpropagation trực quan và đơn giản nhất.     Để thực hiện backpropagation một cách đơn giản,  ta sẽ biểu diễn mô hình như một đồ thị tính toán. Sau đó, ta sẽ tính forward propagation (Truyền xuôi) và đạo hàm trên mỗi block (khối).

2. Các block cơ bản     Các hình dưới đây minh họa cách tính forward và backward propagation trên block cơ bản như add (cộn…

Within Convolutional Layer - Phần 2 (Kết): Backpropagation

Image
Ở bài viết trước, chúng ta đã nói đến Connections cutting, Weights sharing và Convolution tại Forward pass. Trong phần này sẽ chủ yếu diễn giải các công thức, thuật toán được sử dụng để thực hiện Backpropagation tại Convolutional Layer.

Nhắc lại về Forward pass



Như đã nói ở phần I về Convolution operator, công thức tính output Y sau bước convolution input X với kernel W (kích thước $2k+1$) có thể viết thành:
$\Large Y = X \star W + b$ $ b$ là bias.
Tại mỗi điểm $ y_{i,j} \in Y$:
$\LARGE y_{i,j} = \sum\limits_{m=-k}^{k}\sum\limits_{n=-k}^{k}x_{i-m,j-n}w_{i,j} + b$ hay: $\LARGE y_{i,j} = \sum\limits_{m=i-k}^{i+k}\sum\limits_{n=j-k}^{j+k}x_{m,n}w_{i-m,j-n} + b$
BACKPROPAGATION


Nếu các bạn đã biết về Backpropagation ở Linear layer, thì cách tiếp cận với Convolutional layer cũng hoàn toàn tương tự.  Mục tiêu của quá trình lan truyền ngược là tính toán sự tham gia đóng góp lỗi vào hàm mất mát $L$ của mỗi layer, từ đó tối ưu các trọng số của những layer này nhằm giảm loss về mức tối thiểu. Th…