Cơ sở lý thuyết mạng nơron. Thiết kế quỹ đạo, thiết kế quỹ đạo chuyển động robot bằng đa thức bậc cao dưới sự ràng buộc gia tốc, quỹ đạo sử dụng logic mờ, quỹ đạo sử dụng mạng neural. Mô phỏng và thực nghiệm. Cơ sở lý thuyết mạng nơron. Thiết kế quỹ đạo, thiết kế quỹ đạo chuyển động robot bằng đa thức bậc cao dưới sự ràng buộc gia tốc, quỹ đạo sử dụng logic mờ, quỹ đạo sử dụng mạng neural. Mô phỏng và thực nghiệm.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Hà Nội – 2018
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS VŨ THỊ THÚY NGA
Hà Nội – 2018
Trang 31
MỤC LỤC
TRANG PHỤ BÌA
LỜI CAM ĐOAN 3
DANH MỤC HÌNH ẢNH 4
CHƯƠNG I: TỔNG QUAN 6
1.1 Tổng quan về bài toán 6
1.2 Giới thiệu về mạng nơ-ron và ứng dụng trong đề tài 7
CHƯƠNG II: CƠ SỞ LÝ THUYẾT MẠNG NORON 8
2.1 Mô hình nơ-ron và cấu trúc mạng nơ-ron 8
2.1.1 Mô hình nơ-ron 8
2.1.2 Cấu trúc mạng nơ-ron 11
2.1.3 Một số cấu trúc mạng nơ-ron phổ biến 14
2.2 Huần luyện mạng nơ-ron 19
2.2.1 Luật học 19
2.2.2 Luật học Perceptron 20
2.2.3 Một vài thuật toán tối ưu 22
2.2.4 Phương pháp lan truyền ngược 26
2.2.5 Tổng quát hóa mạng nơ-ron (generalization) 29
2.2.6 Huần luyện mạng nơ-ron động 32
2.3 Vân đề huấn luyện mạng nơ-ron trong thực tế 39
2.3.1 Các bước trước huấn luyện 39
2.3.2 Huấn luyện mạng nơ-ron 41
2.3.3 Phân tích kết quả huấn luyện 42
CHƯƠNG III: THIẾT KẾ QUỸ ĐẠO 44
3.1 Sự cần thiết của việc thiết kế quỹ đạo 44
3.2 Bài toán thiết kế quỹ đạo 45
3.2.1 Tổng quan về thiết kế quỹ đạo chuyển động robot 45
3.2.2 Không gian biến khớp và không gian hoạt động 47
3.2.3 Quỹ đạo trong không gian làm việc 47
Trang 43.2.4 Quỹ đạo trong không gian biến khớp 47
3.2.5 Quỹ đạo từ không gian hoạt động sang không gian biến khớp 48
3.3 Thiết kế quỹ đạo chuyển động robot bằng đa thức bậc cao dưới sự ràng buộc gia tốc 48
3.3.1 Tổng quan phương pháp thiết kế 48
3.3.2 Chiến lược thiết kế quỹ đạo 49
3.4 Thiết kế quỹ đạo sử dụng Logic Mờ 50
3.4.1 Tổng quan về logic mờ trong thiết kế quỹ đạo 50
3.4.2 Phương pháp thiết kế bộ điều khiển 50
3.5 Thiết kế quỹ đạo sử dụng mạng neural 51
3.5.1 Tổng quan phương pháp 51
3.5.2 Cấu trúc mạng Neural và bộ điều khiển 51
CHƯƠNG IV: MÔ PHỎNG VÀ THỰC NGHIỆM 54
4.1 Ý tưởng thực hiện 54
4.2 Mô hình tải 55
4.3 Thiết kế quỹ đạo mẫu cho mô hình tải 58
4.3.1 Ý tưởng thiết kế 58
4.3.2 Xấp xỉ tài bằng mạng noron hồi quy 59
4.3.3 Thiết kế bộ phát quỹ đạo mẫu theo mô hình mẫu 65
KẾT LUẬN 72
TÀI LIỆU THAM KHẢO 73
Trang 53
LỜI CAM ĐOAN
Tên tôi là NGUYỄN VĂN THÀNH, học viên cao học ngành Kỹ thuật Điều khiển và Tự động hóa khóa 2016-2018 Giáo viên hướng dẫn khoa học TS VŨ
THỊ THÚY NGA Tôi xin cam đoan bản luận văn này với đề tài “Thiết kế quỹ
đạo mẫu có tính tự học cho hệ cánh tay máy xúc tự động” là công trình nghiên
cứu của riêng tôi và chưa được công bố trong bất cứ công trình nào khác Các số liệu nêu trong luận văn là trung thực
Trang 6DANH MỤC HÌNH ẢNH
Hình 2.1 Nơ-ron một đầu vào 8
Hình 2.2 Nơ-ron nhiều đầu vào 10
Hình 2.3 Nơ-ron nhiều đầu vào dạng vector 10
Hình 2.4 Mạng nơ-ron một lớp 11
Hình 2.5 Mạng nơ-ron một lớp dạng vector 12
Hình 2.6 Mạng nơ-ron nhiều lớp 12
Hình 2.7 Mạng nơ-ron nhiều lớp dạng vector 13
Hình 2.8 Khâu Delay 13
Hình 2.9 Khâu tích phân 14
Hình 2.10 Mạng hồi quy 14
Hình 2.11 Mạng Perceptron 15
Hình 2.12 Mạng ADALINE 15
Hình 2.13 Mạng Perceptron nhiều lớp 16
Hình 2.14 Mạng lọc thích nghi ADAPLINE 17
Hình 2.15 Mạng hồi quy 18
Hình 2.16 Mạng Perceptron 20
Hình 2.17 Mạng Perceptron nhiều lớp 26
Hình 2.18 Hiện tượng overfitting 29
Hình 2.19 Huấn luyện tốt, không bị overfitting 29
Hình 2.20 Mô tả phương pháp early stopping 31
Hình 2.21 Mạng hồi quy 32
Hình 2.22 Sơ đồ mạng trải theo thời gian 33
Hình 2.23 Mạng NARX 35
Hình 2.24 Sơ đồ mạng kín 35
Hình 2.25 Sơ đồ mạng tháo vòng phản hồi 36
Hình 2.26 Sơ đồ quá trình huấn luyện mạng nơ-ron 39
Hình 3.1 Bài toán thiết kế quỹ đạo tổng quát 45
Hình 3.2 Ví dụ về Path Plannong 46
Hình 3.3 Sơ đồ bộ điều khiển Mờ tổng quát 50
Hình 3.4 Cấu trúc mạng Neural 52
Hình 3.5 Sơ đồ khối bộ điều khiển quỹ đạo 53
Hình 4.1 Sơ đồ khối hệ thống 54
Hình 4.2 Hình dạng giả đinh của tải toán 55
Hình 4.3 Quỹ đạo múc tương tác với tải 56
Hình 4.4 Khối lượng múc được thực 58
Hình 4.5 Sở đồ nguyên lý thiết kế bộ điều khiển noron theo phương pháp mô hình mẫu 59
Hình 4.6 Tín hiệu vảo-ra của đối tượng cho quá trình huấn luyện mạng 61
Hình 4.7 Kiến trúc tổng quát của mạng NARX nhận dạng tải toán học 62
Trang 75
Hình 4.8 Kiến trúc mạng đóng (bên trái) và mạng hở (bên hở)………… … …….62
Hình 4.11 Kiến trúc mạng noron điều khiển nối tiếp với mạng noron nhận dạng đối
tượng 66
Hình 4.12 Dữ liệu vào ra của mô hình mẫu cho quá trình huấn luyện mạng noron điều
khiển (hình phía trên là input, phía dưới là output) 67
Hình 4.13 Kết quả huấn luyện bộ điều khiển (các giá trị trục tung được nhân với 1100
để ra giá trị thực) 68
Hình 4.14 Kiến trúc bộ điều khiển (bộ phát quỹ đạo mẫu) 69
Hình 4.15 kết quả chạy bộ điều khiển với tải toán (ở hình dưới, hđược ánh xạ vào vùng giá trị [-1 1], được đặt tên là h_scale) 70
Hình 4.16 Quỹ đạo và khối lượng ở một số bước 71
Trang 8CHƯƠNG I: TỔNG QUAN
1.1 Tổng quan về bài toán
Hiện nay trên thế giới, nhu cầu sử dụng robot ngày càng nhiều vì với những ưu điểm vượt trội so với con người như độ chính xác cao, độ an toàn, độ bền, tăng năng suất lao động, đáp ứng được yêu cầu chất lượng cao trong sản xuất, việc ứng dụng robot trong trong nhiều khâu sản xuất của ngành công nghiệp đang ngày càng trở nên phổ biến Với cuộc cách mạng công nghiệp 4.0, ứng dụng robot trong dây chuyền sản xuất công nghiệp và trong đời sống xã hội sẽ là một trong những trọng tâm của một cuộc cách mạng công nghệ lớn sau Internet ứng dụng robot công nghiệp tự động hóa, gia tăng mô hình "nhà máy thông minh" tại các khu công nghiệp và các mô hình robot thông minh đang là xu hướng phát triển mạnh tại Việt Nam hiện nay
Do một số khó khăn về cơ sở vật chất, điều kiện mà hiện nay ở nước ta vẫn chưa
có nhiều ứng dụng về Robot làm thay thế những công việc tay chân cho con người Trong đó cũng có đề tài mà em đang tìm hiểu đó là thiết kế quỹ đạo mẫu cho robot tự động múc tải ứng dụng trong ngành xây dựng và trong các ngành công nghiệp hiện nay Mục tiêu cụ thể của bài toán là làm sao cho Robot tự động thực hiện việc múc tải sao cho khối lượng múc được luôn được duy trì theo đúng yêu cầu đặt ra (hay là theo một giá trị đặt cho trước) Mục đích của bài toán là tạo một bộ tính toán quỹ đạo mẫu phát quỹ đạo đặt cho Robot máy xúc không người lái
Vì các khó khăn mà công nhân thường gặp đó là xác định đúng khối lượng cho phép và dạng quỹ đạo của tải, cũng như khó khăn của địa hình, môi trường làm việc gây
ra cản trở và nguy hiểm cho con người khi thực hiện công việc, nên việc tìm hiểu là thiết kế quỹ đạo mẫu cho robot tự động múc tải để giảm bớt những khó khăn trên là điều mà em thấy cần thiết Do khi hoạt động trong môi trường làm việc robot sẽ phải chịu rất nhiều sự tác động khác nhau từ môi trường bên ngoài tác động vào gây ra một
số khó khăn cho việc tính toán, xác định quỹ đạo phù hợp để múc tải chính xác với khối
Trang 97
lượng yêu cầu Do đó em có tìm hiểu và đưa ra phương pháp thiết kế quỹ đạo mẫu theo phương pháp nơ-ron
1.2 Giới thiệu về mạng nơ-ron và ứng dụng trong đề tài
Mạng Neuron là mô hình xử lý thông tin được mô phỏng dựa trên hoạt động của
hệ thống thần kinh của sinh vật, bao gồm số lượng lớn các Neuron được gắn kết để xử
lý thông tin Mạng nơ-ron giống như bộ não con người, được học bởi kinh nghiệm (thông qua huấn luyện), có khả năng lưu giữ những kinh nghiệm hiểu biết (tri thức) và
sử dụng những tri thức đó trong việc dự đoán các dữ liệu chưa biết
Ngày nay mạng nơ ron có nhiều ứng dụng trong thưc tế như y học, quân sự, nhận dạng mẫu…và đặc biệt là trong trí tuệ nhân tạo và ứng dụng trong việc thiết kế hệ thống thông minh mà trong đó bộ điều khiển cũng có khả năng tư duy như bộ não con người
là xu hướng mới đang tiến đến của điều khiển tự động
Thực tế, mạng nơron có liên quan đến các lĩnh vực như: học, thích nghi, khái quát hoá và tối ưu hóa Trong các lĩnh vực này thì: sự đoán nhận, học, hoạt động và quyết định là những vấn đề liên quan mật thiết với kỹ thuật dò đường… Kỹ thuật nơron có khả năng xử lý hiệu quả những dữ liệu không chính xác, kích thước lớn, đây sẽ là công việc khó khăn nếu sử dụng phương pháp truyền thống
Trang 10CHƯƠNG II: CƠ SỞ LÝ THUYẾT MẠNG NORON
2.1 Mô hình nơ-ron và cấu trúc mạng nơ-ron
2.1.1 Mô hình nơ-ron
a Nơ-ron một đầu vào
Nơ-ron một đầu vào có mô hình được thể hiện như Hình 2.1 Một đại lượng đầu vào vô hướng p được nhân với thành phần vô hướng weight w, cùng với một tìn hiệu đầu vào “1” được nhân với thành phần vô hướng bias s, chúng được cộng lại thành một thành phần n=wp+b n được đi vào hàm biến đổi f để thu được tín hiệu ra vô hướng a=f(n)=f(wp+b)
Hình 0.1 Nơ-ron một đầu vàoHàm biến đổi f có thể là một hàm tuyến tính hoặc phi tuyến của n Hiện nay, người
ta thường sử dụng một số hàm dưới đây cho mạng nơ-ron
Trang 119
Bảng 0.1 Bảng các hàm chuyển đổi thông dụng của nơ-ron
Kí hiệu hàm Tên hàm Mô tả toán học
1, 0
n a
𝑎 = 𝑝𝑜𝑠𝑙𝑖𝑛(𝑛) Positive Linear 0, 0
n a
Trang 12Nơ-ron nhiều đầu vào có cấu trúc như Hình 2.2 Ở đây, xét một nơ-ron có R đầu vào là p ,p , ,p1 2 R, được biểu diễn thành vector cột p=(p , p , , p )1 2 R T Với mỗi thành phần đầu vào sẽ có các thành phần weight tương ứng w , w , , w1,1 1,2 1,R, được biểu diễn thành weight matrix W=(w , w , , w )1,1 1,2 1,R
Hình 0.2 Nơ-ron nhiều đầu vào
Ta có thể biểu diễn mô hình nơ-ron dưới dạng vector như sau:
Hình 0.3 Nơ-ron nhiều đầu vào dạng vector
Trang 14Hình 0.5 Mạng nơ-ron một lớp dạng vector
b Mạng nhiều lớp
Mạng nơ-ron nhiều lớp được xây dụng bằng cách ghép nối tiếp từng lớp nơ-ron
Mỗi lớp nơ-ron gồm các thông tin: weight matrix M, bias vector b, vector đầu vào p và vector đầu ra a Cấu trúc cụ thể được biểu diễn như Hình 2.6
Hình 0.6 Mạng nơ-ron nhiều lớp
Khi biểu diễn các tham số bằng vector ta có cấu trúc thu gọn như sau:
Trang 15Với tư tưởng như trên, ta có thể định nghĩa khâu tích phân với đầu vào u(t), đầu ra
a(t) được định nghĩa:
Trang 16Hình 0.10 Mạng hồi quy
2.1.3 Một số cấu trúc mạng nơ-ron phổ biến
Trang 18Mạng ADALINE (ADAptive Linear Neuron) có cấu trúc tương tự mạng
Perceptron, chỉ khác ở điểm hàm truyền là hàm tuyến tính purelin
Mạng ADALINE cũng được sử dụng trong các bài toán phân loại tuyến tính
Mạng được đi kèm với luật học Widrow-Hoff sử dụng thuật toán LMS (Least
Mean Square) nên mạnh hơn mạng Perceptron Mạng Perceptron phân loại các mẫu với
đường biên gần nên nhạy cảm với nhiễu trong khi mạng ADALINE cố gắng để đường
biên càng xa càng tốt, nhờ đó kháng nhiễu hiệu quả hơn
- Mạng Perceptron nhiều lớp
Hình 0.13 Mạng Perceptron nhiều lớp
Mạng nhiều lớp là mạng được ghép nối tiếp các lớp nơ-ron có kiến trúc giống
nhau, mỗi lớp nơ-ron có thể có các hàm truyền khác nhau được xây dựng rất đa dạng,
cho phép người dùng có thể thực hiện mọi bài toán phân loại hoặc xấp xỉ một hàm phi
tuyến bất kì
b Mạng nơ-ron động
Mạng nơ-ron động là các mạng có đầu ra tại thời điểm t không những chỉ phụ
thuộc vào giá trị đầu vào tại t mà còn ở các thời điểm trước đó Có hai loại mạng nơ-ron
động phổ biến như sau:
- Feedforward Dynamic Network
Trang 1917
Là mạng nơ-ron không có phản hồi, tương tự như mạng nơ-ron tĩnh nhưng đầu vào của mạng có các khâu trễ khiến đầu ra của mạng ngoài phụ thuộc vào giá trị hiện tại của đầu vào mà còn phụ thuộc trực tiếp vào các giá trị đầu vào của quá khứ
Một ví dụ là việc kết hợp khâu trễ đầu vào với mạng ADALINE để tạo thành bộ lọc thích nghi ADALINE (Adaptive Filter ADALINE)
Trang 20Hình 0.15 Mạng hồi quy
Mạng hồi quy là mạng động với giá trị đầu ra tại mỗi lớp được phản hồi lại
Ứng dụng của mạng là cho phép nhận dạng và thiết kế bộ điều khiển cho các hệ
động học và phi tuyến
Trang 21- Học có giám sát (Supervised Learning)
Trong học có giám sát, sẽ có một tập mẫu
p t1 , 1 , p t2 , 2, ,p t Q, Q,
trong đó, p q là đầu vào của mạng, t qlà đầu ra mong muốn mạng đạt được Khi đưa p q
vào mạng nơ-ron, đầu ra của mạng nơ-ron a q sẽ được so sánh với đầu ra mong muốn t q
và đưa ra các thuật toán hiệu chỉnh các weight và bias sao cho a q bám theo t q
- Học không giám sát (Unsupervised Learning)
- Học gia cố (Reinforcement Learning)
Học không giám sát hoặc học gia cố thì không có đầu ra mong muốn, thay vì đó là một cơ chế đánh giá khác, ví dụ như sử dụng điểm thưởng (reward) trong học gia cố Hiện nay, hai phương pháp này ít được sử dụng trong các mạng nơ-ron thông thường
mà được sử dụng phổ biến hơn trong ngành machine learning
Trang 22;
1 2
S
b b b
b (2)
Ta định nghĩa một thành phần vector hang thứ i của W như sau:
,1 ,2
Trang 23W W ep ; bnew = bold + e ; trong đó e = − t p (3)
Luật học Perceptron đảm bảo tính hội tụ của việc phân loại chính xác mẫu Tuy nhiên ranh giới phân loại thường có xu hướng nằm gần mẫu, vì thế mạng thường nhạy cảm với nhiễu
Trang 242.2.3 Một vài thuật toán tối ưu
Xét bài toán tối ưu: x= arg min( ( ))F x
Trong đó, x là vector các biến w, b trong mạng nơ-ron, F(x) là hàm mục tiêu của
quá trình huấn luyện mạng nơ-ron (thông thường có dạng tổng bình phương sai lệch)
Cách được sử dụng ở đây là phương pháp lặp được thực hiện như sau:
- Chọn giá trị ban đầu x0
- Cập nhật giá trị mới theo công thức: xk+1= + xk kpk;
trong đó pk là hướng tìm, k là tốc độ học
Ta thường sử dụng một số thuật toán tối ưu như sau để xác định hướng tìm
a Phương pháp hạ sâu nhất (Steepest Descent)
Sử dụng khai triển Taylor bậc nhất ta có:
Nhận xét: Phương pháp hạ sâu nhất có các tính toán đơn giản, tuy nhiên tốc độ hội
tụ chậm, chưa xác định được nghiệm toàn cục, có thể sẽ phân kì nếu lựa chọn tốc độ
học k quá lớn Tuy nhiên, ta hoàn toàn có cách để chọn k để đảm bảo sự hội tụ
b Phương pháp Newton
Trang 25k k k k
− + = −
( )
n
F x F x F
F x
x
M,
c Phương pháp Levenberg-Marquardt
Xét hàm mục tiêu có dạng tổng bình phương:
2 1( ) ( ) ( ) ( )
N
T i
Trang 26i i i
Nhược điểm của phương pháp Newton là JT( ) ( )x J x có thể không khả đảo.Do
đó, Levenberg-Marquardt đề xuất thuật toán như sau:
Khi ktiến tới 0, thuật toán trở thành phương pháp Newton
Khi k lớn, thuật toán trở thành phương pháp hạ sâu nhất
Trang 2725 Phương pháp cho phép kết hợp tốc độ học nhanh của phương pháp Newton và đảm bảo được sự hội tụ như phương pháp hạ sâu nhất
Trang 282.2.4 Phương pháp lan truyền ngược
Xét một mạng nơ-ron M lớp như sau:
Đầu vào của mạng nơ-ron là a0 = p ; đầu ra của mạng nơ-ron là a=aM
Sử dụng phương pháp học giám sát cho mạng nơ-ron với tập mẫu
p t1 , 1 , p t2 , 2, ,p t Q, Q,
trong đó, p q là đầu vào của mạng, t q là đầu ra mong muốn mạng đạt được
Xét hàm mục tiêu bình phương sai lêch:
Trang 29i j i i j
m i
Trang 302 2
m m m
m m
m m S m S
f n n
n
f n n
Trang 3129
2.2.5 Tổng quát hóa mạng nơ-ron (generalization)
Mục đích sử dụng mạng nơ-ron để xấp xỉ hàm thông qua tập mẫu
p t1 , 1 , p t2 , 2, ,p t Q, Q
Để xấp xỉ được hàm mong muốn thì cấu trúc mạng nơ-ron và thời gian huấn luyện
là một trong những yếu tố rất quan trọng Mạng nơ-ron nếu quá đơn giản, thời gian huấn luyện quá ngắn sẽ không thể xấp xỉ được đúng Nhưng mạng quá phức tạp, thời gian huấn luyện quá lâu cũng có thể khiến việc xấp xỉ không đúng, gây hiện tượng Overfitting (tức hàm xấp xỉ vẫn đi qua các điểm trong tập học, nhưng phép nội suy thì sai lệch)
Hình 0.18 Hiện tượng overfitting
Hình 0.19 Huấn luyện tốt, không bị overfitting
Trang 32Một trong những giải pháp để khắc phục hiện tượng này là dừng việc huấn luyện đúng thời điểm (Early stopping)
Cách thức của phương pháp này là chia tập học p t1 , 1 , p t2 , 2, ,p t Q, Q thành hai thành phần: tập học thực (khoảng 70-80%) và tập xác nhận
- Tập học thực sẽ được sử dụng để huấn luyện mạng nơ-ron như bình thường
- Tập xác nhận được mạng sử dụng để tính toán kiểm tra ngay trong quá trình huấn luyện Đầu vào của tập xác nhận được đưa vào mạng nơ-ron sau mỗi lần huấn luyện, đầu ra a(k) của mạng sẽ được so sánh với tập đích t(k)để tính hàm mục tiêu Giả sử hàm mục tiêu có dạng tổng bình phương sai lệch, khi đó qua mỗi lần học, hàm mục tiêu sẽ có xu hướng giảm dần Tại thời điểm T, quá trình huấn luyện cho kết quả tốt nhất, sau đó hiện tượng overfitting bắt đầu xảy ra, như vậy sẽ làm cho hàm bình phương sai lệch bị tăng lên Như vậy ta xác định được thời điểm có bộ tham số của mạng nơ-ron cho kết quả tốt nhất, ta có thể dừng việc huấn luyện
Trang 3331
Hình 0.20 Mô tả phương pháp early stopping
Trang 342.2.6 Huần luyện mạng nơ-ron động
Xét một mạng hổi quy như sau:
d là thời gian delay
Đầu ra của mỗi lớp được định nghĩa:
( ) ( ( ))
Trang 35Hình 0.22 Sơ đồ mạng trải theo thời gian
Theo sơ đồ diễn giải mạng theo thời gian, các phép tính đạo hàm ( )T t
Trang 36( )
( )
T e Q
T t
T t
x bằng thuật toán lặp RTRL (Real
Time Recurrent Learing) và
( )
F t
a bằng thuật toán lặp BPTT
(BackPropagation-Throught-Time)
Huấn luyện mạng nơ-ron theo phương pháp dự đoán từng bước
Như đã đề cập ở trên, việc lan truyền ngược phép tính đạo hàm cần phải thực hiện đến tận thời điểm t=1
a a a có thể tiến đến 0, điều này
dẫn đến việc làm giảm tốc độ học của hệ thống
Để khắc phục điều này, người ta thường sử dụng phương pháp mở vòng