New neural network là gì – bài 3: neural network neural network là gì

Bạn đang xem: New neural network là gì – bài 3: neural network neural network là gì Tại monrun.vn

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 xúc cảm từ mạng nơ-ron thần kinh. Kết phù hợp với các kĩ thuật học sâu (Deep Learning – DL), NN đang trở thành một dụ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ý từ ngữ tự nhiên.

Bạn đang xem: Neural network là gì

Trong bài này, ta sẽ cùng tìm hiểu và seting một NN cơ bản để làm nền tảng cho các bài về học sâu tiếp theo.

Mục lục1. Perceptrons1. Perceptrons

1.1. Perceptron cơ bản

Mục lục1. Perceptrons1. Perceptrons

Một mạng nơ-ron được cấu thành bởi các nơ-ron đơn lẻ được gọi là các perceptron. Nên trước tiên ta tìm hiểu xem perceptron là gì đã rồi tiến tới mô hình của mạng nơ-ron sau. Nơ-ron nhân tạo được lấy xúc cảm từ nơ-ron sinh học như hình mô tả bên dưới:

Nơ-ron sinh học. Source: https://cs231n.hauvuong.mobi.io/Nơ-ron sinh học. Source: https://ift.tt/3cg8fn7

Nơ-ron sinh học. Source: https://ift.tt/3cg8fn7

Như hình trên, ta có thể thấy một nơ-ron có thể nhận nhiều đầu vào và cho ra một kết quả duy nhất. Mô hình của perceptron cũng tương tự như vậy:

perceptronperceptron

perceptron

Một perceptron sẽ nhận một hoặc nhiều đầu $mathbf{Ҳ}$ vào dạng nhị phân và cho ra một kết quả $σ$ dạng nhị phân duy nhất. Các đầu vào được điều phối tầm tác động bởi các tham số trọng lượng tương ứng $mathbf{w}$ của nó, còn kết quả đầu ra được quyết định dựa vào một ngưỡng quyết định $ɓ$ nào đó:

$$σ = begin{cases}0 &text{if }displaystylesum_iw_ix_i le text{threshold}cr1 &text{if }displaystylesum_iw_ix_i > text{threshold}end{cases}$$

Đặt $ɓ=-text{threshold}$, ta có thể viết lại thành:$$σ = begin{cases}0 &text{if }displaystylesum_iw_ix_i + ɓ le 0cr1 &text{if }displaystylesum_iw_ix_i + ɓ > 0end{cases}$$

Để dễ hình dung, ta lấy ví dụ việc đi nhậu hay không phụ thuộc vào 4 yếu tố sau:

1. Trời có nắng hay không?2. Có hẹn trước hay không?3. Vợ có vui hay không?4. Bạn nhậu có ít khi gặp được hay không?

1. Trời có nắng hay không?2. Có hẹn trước hay không?3. Vợ có vui hay không?4. Bạn nhậu có ít khi gặp được hay không?

Thì ta coi 4 yếu tố đầu vào là $x_1, x_2, x_3, x_4$ và nếu $σ=0$ thì ta không đi nhậu còn $σ=1$ thì ta đi nhậu. Giả sử mức độ trọng yếu của 4 yếu tố trên lần lượt là $w_1=0.05, w_2=0.5, w_3=0.2, w_4=0.25$ và chọn ngưỡng $ɓ=-0.5$ thì ta có thể thấy rằng việc trời nắng có tác động chỉ 5% tới quyết định đi nhậu và việc có hẹn từ trước tác động tới 50% quyết định đi nhậu của ta.

Nếu gắn $x_0=1$ và $w_0=ɓ$, ta còn tồn tại thể viết gọn lại thành:$$σ = begin{cases}0 &text{if }mathbf{w}^{intercal}mathbf{Ҳ} le 0cr1 &text{if }mathbf{w}^{intercal}mathbf{Ҳ} > 0end{cases}$$

1.2. Sigmoid Neurons

Với đầu vào và đầu ra dạng nhị phân, ta rất khó có thể điều chỉnh một lượng nhỏ đầu vào để đầu ra thay đổi chút ít, nên để linh hoạt, ta có thể mở rộng chúng ra cả khoảng $<0, 1>$. Lúc này đầu ra được quyết định bởi một hàm sigmoid $sigma(mathbf{w}^{intercal}mathbf{Ҳ})$. Như các bài trước đã đề cập thì hàm sigmoid có công thức:$$sigma(z) = dfrac{1}{1+e^{-z}}$$

Đồ thị của hàm này cũng tương xứng rất đẹp trổ tài được mức độ công bình của các tham số:

Sigmoid Function

Sigmoid Function

Đặt $z = mathbf{w}^{intercal}mathbf{Ҳ}$ thì công thức của perceptron lúc này sẽ có dạng:$$σ = sigma(z) = dfrac{1}{1+exp(-mathbf{w}^{intercal}mathbf{Ҳ})}$$

Tới đây thì ta có thể thấy rằng mỗi sigmoid neuron cũng tương tự như một bộ phân loại tuyến tính (logistic regression) bởi xác suất $Ρ(y_i=1|x_i;mathbf{w})=sigma(mathbf{w}^{intercal}mathbf{Ҳ})$.

Thực ra thì ngoài hàm sigmoid ra, ta còn tồn tại thể một số hàm khác như $tanh$, $text{ReLU}$ để thay thế hàm sigmoid bởi dạng đồ thị của nó cũng tương tự như sigmoid. Một cách tổng quát, hàm perceptron được trình diễn qua một hàm kích hoạt (activation function) $ƒ(z)$ như sau:$$σ = ƒ(z) = ƒ(mathbf{w}^{intercal}mathbf{Ҳ})$$

Bằng cách trình diễn như vậy, ta có thể coi neuron sinh học được trổ tài như sau:

Mô hình Nơ-ron. . Source: https://cs231n.hauvuong.mobi.io/Mô hình Nơ-ron. . Source: https://ift.tt/3cg8fn7

Mô hình Nơ-ron. . Source: https://ift.tt/3cg8fn7

Một điểm cần lưu ý là các hàm kích hoạt buộc phải là hàm phi tuyến. Vì nếu nó là tuyến tính thì khi kết phù hợp với phép toán tuyến tính $mathbf{w}^{intercal}mathbf{Ҳ}$ thì kết quả thu được cũng sẽ là một thao tác tuyến tính dẫn tới chuyện nó trở nên vô nghĩa.

2. Kiến trúc mạng NN

2. Kiến trúc mạng NN

Mạng NN là sự phối hợp của của các tầng perceptron hay còn được gọi là perceptron đa tầng (multilayer perceptron) như hình vẽ bên dưới:

Neural Network. . Source: https://cs231n.hauvuong.mobi.io/Neural Network. . Source: https://ift.tt/3cg8fn7

Neural Network. . Source: https://ift.tt/3cg8fn7

Một mạng NN sẽ có 3 kiểu tầng:

Tầng vào (input layer): Là tầng bên trái cùng của mạng trổ tài cho các đầu vào của mạng.Tầng ra (output layer): Là tầng bên phải cùng của mạng trổ tài cho các đầu ra của mạng.Tầng ẩn (hidden layer): Là tầng nằm giữa tầng vào và tầng ra trổ tài cho việc suy luận logic của mạng.

(input layer): Là tầng bên trái cùng của mạng trổ tài cho các đầu vào của mạng.(output layer): Là tầng bên phải cùng của mạng trổ tài cho các đầu ra của mạng.(hidden layer): Là tầng nằm giữa tầng vào và tầng ra trổ tài cho việc suy luận logic của mạng.

Lưu ý rằng, một NN chỉ có 1 tầng vào và 1 tầng ra nhưng có thể có nhiều tầng ẩn.

NN - 2 hidden layer. . Source: https://cs231n.hauvuong.mobi.io/NN – 2 hidden layer. . Source: https://ift.tt/3cg8fn7

NN – 2 hidden layer. . Source: https://ift.tt/3cg8fn7

Trong mạng NN, mỗi nút mạng là một sigmoid nơ-ron nhưng hàm kích hoạt của chúng có thể khác nhau. Tuy nhiên trong thực tiễn người ta thường để chúng cùng dạng với nhau để tính toán cho thuận tiện.

Ở mỗi tầng, số lượng các nút mạng (nơ-ron) có thể khác nhau tuỳ thuộc vào bài toán và cách xử lý. Nhưng thường khi làm việc người ta để các tầng ẩn có số lượng nơ-ron bằng nhau. Ngoài ra, các nơ-ron ở các tầng thường được link đôi một với nhau tạo thành mạng kết nối đầy đủ (full-connected network). Khi đó ta có thể tính được kích thước của mạng dựa vào số tầng và số nơ-ron. Ví dụ ở hình trên ta có:

$4$ tầng mạng, trong đó có $2$ tầng ẩn$3+4*2+1=12$ nút mạng$(3*4+4*4+4*1)+(4+4+1)=41$ tham số3. Lan truyền tiến

$4$ tầng mạng, trong đó có $2$ tầng ẩn$3+4*2+1=12$ nút mạng$(3*4+4*4+4*1)+(4+4+1)=41$ tham số3. Lan truyền tiến

Như bạn thấy thì toàn bộ các nốt mạng (nơ-ron) được phối hợp đôi một với nhau theo một chiều duy nhất từ tầng vào tới tầng ra. Tức là mỗi nốt ở một tầng nào đó sẽ nhận đầu vào là toàn bộ các nốt ở tầng trước này mà không suy luận trái lại. Hay nói cách khác, việc suy luận trong mạng NN là suy luận tiến (feedforward):

$$begin{aligned}z^{(ɭ+1)}_i &= displaystylesum_{j=1}^{и^{(ɭ)}} w^{(ɭ+1)}_{ij}α^{(ɭ)}_j + ɓ^{(ɭ+1)}_icra_i^{(ɭ+1)} &= fbig(z^{(ɭ+1)}_ibig)end{aligned}$$

Trong đó, $и^{(ɭ)}$ số lượng nút ở tầng $ɭ$ tương ứng và $α^{(ɭ)}_j$ là nút mạng thứ $j$ của tầng $ɭ$. Còn $w^{(ɭ+1)}_{ij}$ là tham số trọng lượng của đầu vào $α^{(ɭ)}_j$ so với nút mạng thứ $ι$ của tầng $ɭ+1$ và $ɓ^{(ɭ+1)}_i$ là độ lệch (bias) của nút mạng thứ $ι$ của tầng $ɭ+1$. Đầu ra của nút mạng này được trình diễn bằng $a_i^{(ɭ+1)}$ ứng với hàm kích hoạt $ƒ(z_i)$ tương ứng.

Riêng với tầng vào, thông thường $mathbf{α}^{(1)}$ cũng chính là các đầu vào $mathbf{Ҳ}$ tương ứng của mạng.

Để tiện tính toán, ta coi $α^{(ɭ)}_0$ là một đầu vào và $w^{(ɭ+1)}_{i0}=ɓ^{(ɭ+1)}_i$ là tham số trọng lượng của đầu vào này. Lúc đó ta có thể viết lại công thức trên dưới dạng véc-tơ:

$$begin{aligned}z^{(ɭ+1)}_i &= mathbf{w}^{(ɭ+1)}_icdotmathbf{α}^{(ɭ)}cra_i^{(ɭ+1)} &= fbig(z^{(ɭ+1)}_ibig)end{aligned}$$

Nếu nhóm các tham số của mỗi tầng thành một ma trận có các cột tương ứng với tham số mỗi nút mạng thì ta có thể tính toán cho toàn thể các nút trong một tầng bằng véc-tơ:$$begin{aligned}mathbf{z}^{(ɭ+1)} &= mathbf{𝒲}^{(ɭ+1)}cdotmathbf{α}^{(ɭ)}crmathbf{α}^{(ɭ+1)} &= fbig(mathbf{z}^{(ɭ+1)}big)end{aligned}$$

4. Học với mạng NN

4. Học với mạng NN

Cũng tương tự như các bài toán học máy khác thì quá trình học vẫn là tìm lấy một hàm lỗi để nhận xét và tìm cách tối ưu hàm lỗi đó để được kết quả hợp lý nhất có thể. Như đã đề cập mỗi nút mạng của NN có thể coi là một bộ phân loại (logistic regression) có hàm lỗi là:

$$Ĵ(mathbf{𝒲}) = -frac{1}{ɱ}sum_{ι=1}^ɱBigg(y^{(ι)}logBig(sigma^{(ι)}Big)+Big(1-y^{(ι)}Big)logBig(1-sigma^{(ι)}Big)Bigg)$$

Trong đó, $ɱ$ là số lượng dữ liệu huấn luyện, $y^{(ι)}$ là đầu ra thực tiễn của dữ liệu thứ $ι$ trong tập huấn luyện. Còn $sigma^{(ι)}$ là kết quả ước lượng được ứng với dữ liệu thứ $ι$.

Xem thêm: Ngành Văn Hóa Học Là Gì ? Khám Phá Cơ Hội Việc Làm Văn Hóa Hot Nhất!

Hàm lỗi của NN cũng tương tự như vậy, chỉ khác là đầu ra của mạng NN có thể có nhiều nút nên khi tính đầu ra ta cũng phải tính cho từng nút ra đó. Giả sử số nút ra là $₭$ và $y_k$ là đầu ra thực tiễn của nút thứ $ƙ$, còn $sigma_k$ là đầu ra ước lượng được cho nút thứ $ƙ$ tương ứng. Khi đó, công thức tính hàm lỗi sẽ thành:

$$Ĵ(mathbb{𝒲}) = -frac{1}{ɱ}sum_{ι=1}^msum_{ƙ=1}^₭Bigg(y_k^{(ι)}logBig(sigma_k^{(ι)}Big)+Big(1-y_k^{(ι)}Big)logBig(1-sigma_k^{(ι)}Big)Bigg)$$

Lưu ý rằng, các tham số lúc này không còn đơn thuần là một ma trận nữa mà là một tập của toàn bộ các ma trận tham số của toàn bộ các tầng mạng nên tôi trình diễn nó dưới dạng tập hợp $mathbb{𝒲}$.

Để tối ưu hàm lỗi ta vẫn sử dụng các phương pháp đạo hàm như đã đề cập ở các bài viết trước. Nhưng việc tính đạo hàm lúc này không đơn thuần như logistic regression bởi để ước lượng được đầu ra ta phải trải qua quá trình lan truyền tiến. Tức là để tính được $sigma_k$ ta cần một loạt các phép tính liên hợp nhau.

5. Lan truyền ngược và đạo hàm

5. Lan truyền ngược và đạo hàm

Để tính đạo hàm của hàm lỗi $nabla Ĵ(mathbb{𝒲})$ trong mạng NN, ta sử dụng một giải thuật đặc biệt là giải thuật lan truyền ngược (backpropagation). Nhờ có giải thuật được sáng tạo vào năm 1986 này mà mạng NN thực thi hiệu quả được và ứng dụng ngày một nhiều cho tới tận ngày này.

Về cơ bản phương pháp này được dựa trên quy tắc chuỗi đạo hàm của hàm hợp và phép tính ngược đạo hàm để thu được đạo hàm theo toàn bộ các tham số song song chỉ với 2 lần duyệt mạng. Tuy nhiên trong bài viết này, tôi chỉ đề cập ngay tới công thức tính toán còn việc minh chứng thì tôi sẽ giành cho các bài tiếp theo.

Giải thuật lan truyền ngược được thực hiện như sau:

1. Lan truyền tiến:Lần lượt tính các $mathbf{α}^{(ɭ)}$ từ $ɭ=2rightarrow ɭ$ theo công thức:$$begin{aligned}&mathbf{z}^{(ɭ)}=mathbf{𝒲}^{(ɭ)}cdotmathbf{α}^{(l-1)}crvàmathbf{α}^{(ɭ)}=ƒ(mathbf{z}^{(ɭ)})end{aligned}$$Trong đó, tầng vào $mathbf{α}^{(1)}$ chính bằng giá trị vào của mạng $mathbf{Ҳ}$.

2. Tính đạo hàm theo $z$ ở tầng ra:$$dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ)}}} = dfrac{partial{Ĵ}}{partial{mathbf{α}^{(ɭ)}}}dfrac{partial{mathbf{α}^{(ɭ)}}}{partial{mathbf{z}^{(ɭ)}}}$$với $mathbf{α}^{(ɭ)}, mathbf{z}^{(ɭ)}$ vừa tính được ở bước 1.

3. Lan truyền ngược:Tính đạo hàm theo $z$ trái lại từ $ɭ=(ɭ-1)rightarrow 2$ theo công thức:$$begin{aligned}dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ)}}} &= dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ+1)}}}dfrac{partial{mathbf{z}^{(ɭ+1)}}}{partial{mathbf{α}^{(ɭ)}}}dfrac{partial{mathbf{α}^{(ɭ)}}}{partial{mathbf{z}^{(ɭ)}}}cr& = bigg(big(mathbf{𝒲}^{(ɭ+1)}big)^{intercal}dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ+1)}}}bigg)dfrac{partial{mathbf{α}^{(ɭ)}}}{partial{mathbf{z}^{(ɭ)}}}end{aligned}$$với $mathbf{z}^{(ɭ)}$ tính được ở bước 1 và $dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ+1)}}}$ tính được ở vòng lặp ngay trước.

4. Tính đạo hàm:Tính đạo hàm theo tham số $w$ bằng công thức:$$begin{aligned}dfrac{partial{Ĵ}}{partial{mathbf{𝒲}^{(ɭ)}}} &= dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ)}}}dfrac{partial{mathbf{z}^{(ɭ)}}}{partial{mathbf{𝒲}^{(ɭ)}}}cr& = dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ)}}}big(mathbf{α}^{(l-1)}big)^{intercal}end{aligned}$$với $mathbf{α}^{(l-1)}$ tính được ở bước 1 và $dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ)}}}$ tính được ở bước 3.

6. Tổng kết

6. Tổng kết

Lấy xúc cảm từ mạng nơ-ron sinh học, mạng NN được tạo dựng từ các tầng nơ-ron nhân tạo. Mạng NN gồm 3 kiểu tầng chính là tầng vào (input layer) trình diễn cho đầu vào, tầng ra (output layer) trình diễn cho kết quả đầu ra và tầng ẩn (hidden layer) trổ tài cho các bước suy luận trung gian. Mỗi nơ-ron sẽ nhận toàn bộ đầu vào từ các nơ-ron ở tầng trước đó và sử dụng một hàm kích hoạt dạng (activation function) phi tuyến như sigmoid, ReLU, tanh để tính toán đầu ra.

Quá trình suy luận từ tầng vào tới tầng ra của mạng NN là quá trình lan truyền tiến (feedforward), tức là đầu vào các nơ-ron tại 1 tầng đều lấy từ kết quả các nơ-ron tầng trước này mà không có quá trình suy luận trái lại.

$$begin{aligned}mathbf{z}^{(ɭ+1)} &= mathbf{𝒲}^{(ɭ+1)}cdotmathbf{α}^{(ɭ)}crmathbf{α}^{(ɭ+1)} &= fbig(mathbf{z}^{(ɭ+1)}big)end{aligned}$$

Hàm lỗi của mạng cũng tương tự như logistic regression có dạng cross-entropy, tuy nhiên khác logistic regression ở chỗ mạng NN có nhiều đầu ra nên hàm lỗi cũng phải lấy tổng lỗi của toàn bộ các đầu ra này:

$$Ĵ(mathbb{𝒲}) = -frac{1}{ɱ}sum_{ι=1}^msum_{ƙ=1}^₭Bigg(y_k^{(ι)}logBig(sigma_k^{(ι)}Big)+Big(1-y_k^{(ι)}Big)logBig(1-sigma_k^{(ι)}Big)Bigg)$$

Để tối ưu được hàm lỗi $Ĵ(mathbb{𝒲})$ này người ta sử dụng giải thuật lan truyền ngược (backpropagation) để tính được đạo hàm của hàm lỗi này.

$$begin{aligned}dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ)}}} &= dfrac{partial{Ĵ}}{partial{mathbf{α}^{(ɭ)}}}dfrac{partial{mathbf{α}^{(ɭ)}}}{partial{mathbf{z}^{(ɭ)}}}crdfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ)}}} &= bigg(big(mathbf{𝒲}^{(ɭ+1)}big)^{intercal}dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ+1)}}}bigg)dfrac{partial{mathbf{α}^{(ɭ)}}}{partial{mathbf{z}^{(ɭ)}}}crdfrac{partial{Ĵ}}{partial{mathbf{𝒲}^{(ɭ)}}} &= dfrac{partial{Ĵ}}{partial{mathbf{z}^{(ɭ)}}}big(mathbf{α}^{(l-1)}big)^{intercal}end{aligned}$$

Nội dung giới thiệu này cơ bản đã trình bài khái niệm và các lý thuyết cơ bản của một mạng NN, còn cách seting ra sao thì bạn có thể đón đọc ở bài tiếp theo nhé.


Mạng nơ-ron nhân tạo – Neural Networks | Tự học machine learning cơ bản


Mua khóa học đầy đủ tại đây https://ift.tt/30ngXgK để ủng hộ mình nhé
Nếu bạn thấy nó hữu ích hãy mời tôi 1 cốc trà đá, số vốn nhỏ này sẽ giúp tôi có động lực cải tổ chất lượng video
và làm nhiều việc giúp ích cho cộng đồng nhiều hơn, Cảm ơn các bạn.
Các bạn nhớ để lại số smartphone khi chuyển để mình gọi hoặc nhắn tin cảm ơn nhé cảm ơn các bạn

Ngân hàng VIETTINBANK : 108002685772
HOTEN: NGUYEN HUU SON
Chi nhánh quản lý TK: CN HOAN KIEM HOI SO

Ngân hàng Vietcombank : 0491000129303
HOTEN: NGUYEN HUU SON

Ngân hàng TECHCOMBANK : 19033323084013
HOTEN: NGUYEN HUU SON

Ngân hàng TPBank: 02411584001
Họ tên: NGUYEN HUU SON
Chi nhánh TPBANK HAI BA TRUNG

Tài khoản ví điện tử momo: 01637865385
Mọi thắc mắc các bạn có thể liên hệ fb cá nhân: https://ift.tt/3wXUwLq
Tham ra groups học cntt để thảo luận: https://ift.tt/3qFn7Uw
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 xúc cảm từ mạng nơron thần kinh. Kết phù hợp với các kĩ thuật học sâu (Deep Learning DL), NN đang trở thành một dụ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ý từ ngữ tự nhiên.

Xem thêm bài viết thuộc chuyên mục: Hỏi Đáp
Xem thêm bài viết thuộc chuyên mục: Hỏi Đáp

The post New neural network là gì – bài 3: neural network neural network là gì appeared first on Monrun.vn.



source https://monrun.vn/new-neural-network-la-gi-bai-3-neural-network-neural-network-la-gi/

Nhận xét

Bài đăng phổ biến từ blog này

Trang Tin Làm Đẹp Monrun

Sao la hầu là gì tốt hay xấu chiếu mệnh nam nữ tuổi nào năm 2021 sao la hầu là gì? sao la hầu tốt hay xấu, kỵ khắc màu gì?

Thiết bị ngoại vi là gì ? phân biệt thiết bị ngoại vi thiết bị ngoại vi là gì thiết bị ngoại vi là gì