Làm thế nào để mạng lưới thần kinh nhận ra hình ảnh?


25

Tôi đang cố gắng học cách Neural Network hoạt động trên nhận dạng hình ảnh. Tôi đã thấy một số ví dụ và trở nên bối rối hơn. Trong ví dụ về nhận dạng chữ cái của hình ảnh 20x20, các giá trị của mỗi pixel trở thành lớp đầu vào. Vì vậy, 400 tế bào thần kinh. Sau đó, một lớp tế bào thần kinh ẩn và 26 tế bào thần kinh đầu ra. Sau đó đào tạo mạng, và sau đó nó hoạt động, không hoàn hảo.

Điều làm tôi bối rối về Mạng thần kinh là, cách nó tìm hiểu về những gì trong một hình ảnh. Bạn không cần phải thực hiện ngưỡng, hoặc phân đoạn hoặc đo lường, bằng cách nào đó, mạng học cách so sánh hình ảnh và nhận dạng. Nó giống như phép màu đối với tôi bây giờ. Bắt đầu học mạng thần kinh ở đâu?


1
Nếu tôi hiểu chính xác, một mạng lưới thần kinh chỉ là một bề mặt đa chiều trong một số không gian trừu tượng, mà cực trị cục bộ dẫn đến các lựa chọn có thể. Dạy một mạng lưới thần kinh chỉ là điều chỉnh bề mặt trừu tượng này với nhiệm vụ của nó. Đó là sự hiểu biết của tôi.

Vì vậy, bạn muốn giải thích HOẶC tài nguyên để bắt đầu làm việc với NN? Nó sẽ là tốt đẹp để làm rõ.

2
Có (hiện tại) một khóa học miễn phí tốt đẹp về coursera dành riêng cho câu hỏi của bạn. coursera.org/cference/neuralnets
vỗ

Lớp Coursera NN có vẻ như sẽ được nâng cao, không tốt như giới thiệu. Andrew Ng có một số lời giới thiệu nhẹ nhàng hơn mà bạn có thể tìm thấy, ví dụ, trên Youtube.
Douglas Zare

Trên thực tế, khóa học Coursera đã được nâng cao, nhưng nó chắc chắn được xây dựng và sẽ trả lời câu hỏi của OP khá tốt. Nó cũng có rất nhiều ví dụ trong nhận dạng chữ số.
Chris A.

Câu trả lời:


24

Một cái nhìn sâu sắc về cách một mạng lưới thần kinh có thể học cách phân loại thứ gì đó phức tạp như dữ liệu hình ảnh chỉ là ví dụ và câu trả lời chính xác đã đến với tôi trong khi nghiên cứu công trình của Giáo sư Kunihiko Fukushima về nhận thức mới trong những năm 1980. Thay vì chỉ hiển thị cho mạng của mình một loạt các hình ảnh và sử dụng phương pháp truyền ngược để cho phép nó tự tìm ra mọi thứ, anh ấy đã thực hiện một cách tiếp cận khác và huấn luyện từng lớp mạng của mình, và thậm chí từng nút. Ông đã phân tích hiệu suất và hoạt động của từng nút riêng lẻ của mạng và cố ý sửa đổi các phần đó để làm cho chúng phản hồi theo cách dự định.

Chẳng hạn, anh ta biết rằng anh ta muốn mạng có thể nhận ra các đường, vì vậy anh ta đã huấn luyện các lớp và nút cụ thể để nhận ra ba đường ngang pixel, 3 pixel dọc và các biến thể cụ thể của các đường chéo ở mọi góc. Bằng cách này, anh ta biết chính xác những phần nào của mạng có thể được tính để kích hoạt khi các mẫu mong muốn tồn tại. Sau đó, vì mỗi lớp được kết nối cao, toàn bộ neocognitron có thể xác định từng bộ phận tổng hợp có trong hình ảnh bất kể chúng tồn tại ở đâu. Vì vậy, khi một phân đoạn dòng cụ thể tồn tại ở đâu đó trong hình ảnh, sẽ luôn có một nút cụ thể sẽ kích hoạt.

Giữ hình ảnh này luôn hiện diện, xem xét hồi quy tuyến tính chỉ đơn giản là tìm một công thức (hoặc một dòng) thông qua tổng lỗi bình phương, truyền qua dữ liệu của bạn một cách chặt chẽ nhất, đủ dễ hiểu. Để tìm các "đường" cong, chúng ta có thể thực hiện cùng một phép tính sản phẩm, ngoại trừ bây giờ chúng ta thêm một vài tham số của x ^ 2 hoặc x ^ 3 hoặc thậm chí các đa thức bậc cao hơn. Bây giờ bạn có một phân loại hồi quy logistic. Phân loại này có thể tìm thấy các mối quan hệ không có tính chất tuyến tính. Trong thực tế, hồi quy logistic có thể biểu thị các mối quan hệ phức tạp tùy ý, nhưng bạn vẫn cần phải chọn thủ công số lượng tính năng chính xác để thực hiện tốt công việc dự đoán dữ liệu.

Một cách nghĩ về mạng nơ-ron là coi lớp cuối cùng là phân loại hồi quy logistic , và sau đó các lớp ẩn có thể được coi là "bộ chọn tính năng" tự động . Điều này giúp loại bỏ công việc chọn thủ công số lượng và sức mạnh của các tính năng đầu vào. Do đó, NN trở thành bộ chọn tính năng năng lượng tự động và có thể tìm thấy bất kỳ mối quan hệ tuyến tính hoặc phi tuyến tính nào hoặc đóng vai trò là bộ phân loại của các tập hợp phức tạp tùy ý ** (điều này, chỉ giả sử rằng có đủ các lớp và kết nối ẩn để biểu thị mức độ phức tạp của mô hình nó cần học). Cuối cùng, một NN hoạt động tốt được kỳ vọng sẽ học không chỉ là "mối quan hệ" giữa đầu vào và đầu ra, mà thay vào đó chúng tôi cố gắng cho một sự trừu tượng hoặc một mô hìnhkhái quát tốt.

Như một quy luật tự nhiên, mạng lưới thần kinh không thể học được bất cứ điều gì mà con người thông minh hợp lý không thể học về mặt lý thuyết khi có đủ thời gian từ cùng một dữ liệu, tuy nhiên,

  • nó có thể học được điều gì đó chưa ai tìm ra
  • đối với các vấn đề lớn, một ngân hàng máy tính xử lý mạng thần kinh có thể tìm thấy các giải pháp thực sự tốt nhanh hơn nhiều so với một nhóm người (với chi phí thấp hơn nhiều)
  • một khi các NN được đào tạo sẽ tạo ra kết quả đồng ý với các đầu vào mà họ đã được đào tạo và sẽ khái quát hóa tốt nếu được điều chỉnh đúng
  • NN không bao giờ chán hoặc mất tập trung

1
+1 cho đoạn văn về cách lớp cuối cùng thực hiện hồi quy logistic trên đầu lựa chọn tính năng của lớp ẩn. Đó là một cách tốt đẹp để suy nghĩ về NN.
jlund3

Cảm ơn, nhưng tôi nên làm rõ rằng tôi không nói chính xác rằng lớp cuối cùng của mỗi ANN thực sự là lớp hồi quy logistic, nhưng chỉ có điều đây là một cấu hình có thể giải quyết được nhiều vấn đề. Do cách thức chủ yếu là ngẫu nhiên, chúng tôi thường huấn luyện ANN rất có thể là bất kỳ hồi quy kết quả nào được trải đều trên nhiều nút và lớp theo cách rất ngẫu nhiên. Người ta có thể huấn luyện các mạng con để đáp ứng theo những cách cụ thể và sau đó bơm đầu ra của các mạng đó vào một lớp hồi quy để tạo ra các mạng chuyên dụng thủ công cho các vấn đề cụ thể. Tạo một ANN hiệu quả cao về bộ nhớ và tốc độ.
mcstar

1
Câu trả lời này tiếp tục nhận được lượt xem, vì vậy tôi nghĩ rằng tôi đã chỉ ra rằng bây giờ nó đã hơn 5 tuổi và chỉ xem xét các mạng được kết nối đầy đủ. Mặc dù những hiểu biết về khái niệm ở đây vẫn còn hiệu lực, nhưng chúng không cung cấp cho người thực hành đủ để hiểu các khái niệm NN sâu sắc đã trở thành tiêu chuẩn trong thập kỷ qua. CNN (mạng nơ ron tích chập) là một sự thích ứng hiện đại rất quan trọng mang lại cho các siêu năng lực mạng sâu bằng cách cho phép chúng xác định vị trí các cạnh, độ tương phản, độ sắc nét, không gian màu, bóng và hơn thế nữa và sử dụng để xác định bối cảnh của các tính năng cấp thấp.
mcstar

10

Bạn có thể đã nghe nói rằng các mạng thần kinh là "các hàm xấp xỉ chức năng phổ quát ". Về bản chất, định lý Cybenko nói rằng đối với bất kỳ chức năng ánh xạ hàm nào thành thực, bạn có thể ước chừng nó bằng một mạng thần kinh với các hàm kích hoạt sigmoid. Trên thực tế, hóa ra các mạng thần kinh cho phép bạn tính toán bất kỳ chức năng nào có thể tính toán được bằng máy Turing (tức là bất cứ điều gì bạn có thể viết một thuật toán để tính toán). Thật không may, những bằng chứng này chỉ nói rằng đối với một số cấu hình hữu hạn của các nơ-ron và trọng lượng, bạn có thể tính gần đúng bất kỳ chức năng nào.

Lý thuyết là tất cả tốt đẹp và bẩn thỉu, nhưng câu hỏi của bạn dường như đi sâu hơn về cách thực sự mã hóa tính toán của một số chức năng thành một tập hợp các nơ-ron và trọng lượng. Để minh họa, hãy xem xét một ví dụ đơn giản - độc quyền hoặc. XOR có hai đầu vào, vượt qua các đầu vào đó. Khi một và chỉ một trong các đầu vào được kích hoạt, thì nút đầu ra được kích hoạt. Với cả hai hoặc không có đầu vào nào được kích hoạt, thì nút đầu ra không được kích hoạt.

Một mạng lưới Perceptron ba lớp có khả năng tính toán XOR mượn từ wikipedia.

Lưu ý rằng ba nút ẩn làm những việc khác nhau. Hầu hết các nút bên trái và bên phải hầu hết chỉ đơn giản là thông qua kích hoạt các nút đầu vào tôn trọng. Tế bào thần kinh giữa có hai đầu vào và bằng cách nào đó phủ nhận chúng nếu cả hai đều bật. Sự kết hợp thông minh và kết hợp lại các yếu tố đầu vào này về cơ bản là cách thức hoạt động trong một mạng lưới thần kinh được thực hiện.

Rõ ràng đối với các chức năng phức tạp hơn, việc kết hợp và kết hợp lại phải được thực hiện theo những cách thông minh và phức tạp hơn, nhưng thực chất đây là những gì xảy ra ở mức độ thấp. Điều điên rồ là đây thực sự là tất cả những gì bạn cần để tính toán bất kỳ hàm tính toán nào! Sau đó, một lần nữa, máy turing cũng trở nên đơn giản ...

Vấn đề là chúng ta không thực sự có cách tạo ra mạng lưới thần kinh một cách kỳ diệu để tính toán một số chức năng tùy ý. Bằng chứng chỉ cho chúng ta biết rằng có một số mạng ngoài kia có thể làm điều đó. Khi chúng tôi đào tạo các mạng lưới thần kinh, chúng tôi chỉ đơn giản là cố gắng tìm một mạng khá gần.

Trong bối cảnh nhận dạng hình ảnh, bạn có thể tưởng tượng các mẫu mã hóa vào mạng. Ví dụ: để nhận ra số '1', bạn có thể tưởng tượng một nút ẩn dự kiến ​​một cột pixel hầu hết hoặc được kích hoạt, với các pixel lân cận sẽ bị tắt. Nút ẩn này có thể khá tốt trong việc nhận ra một đường thẳng trong cột cụ thể đó. Đặt đủ các thứ này lại với nhau và chẳng mấy chốc bạn đã có một loạt các nút thực hiện nó ở những vị trí đủ của hình ảnh mà nếu tôi hiển thị mạng một, các nút ẩn đường thẳng đủ sẽ được kích hoạt, biểu thị '1'. Vấn đề tất nhiên trở thành khái quát hóa mạng để nó có thể nhận ra một tập hợp đầu vào khác nhau.

Hy vọng rằng điều này sẽ giúp bạn hiểu ít nhiều các khái niệm về cách một mạng lưới thần kinh có thể thực hiện các tính toán. Tuy nhiên, bạn đã đạt được một điểm khá quan trọng đối với các mạng thần kinh: nói chung khó có thể hiểu được tại sao mạng lại tạo ra một đầu ra cụ thể, đặc biệt là khi bạn xem xét điều đó như nhận dạng hình ảnh, các mạng nói chung đủ lớn để con người có một thời gian khó khăn để hiểu từng bộ phận chuyển động của máy. Làm phức tạp thêm vấn đề là nói chung hầu hết các mạng thần kinh không thực sự có một nút ẩn duy nhất cho mỗi tính năng nhỏ mà mạng có thể tìm hiểu về dữ liệu. Thay vào đó, việc phát hiện thứ gì đó như một đường thẳng để phân loại số '1' sẽ diễn ra theo cách không tập trung trên nhiều nút ẩn. Các thuật toán khác,

Nếu bạn đang tìm kiếm đọc nhiều hơn, tôi khuyên bạn nên đọc qua hướng dẫn này tại ai rác. Nó hướng dẫn bạn qua những điều cơ bản về cách thức hoạt động của một mạng lưới thần kinh và thậm chí đưa ra một ví dụ mã đơn giản để có được các mạng lưới thần kinh để điều khiển xe tăng hướng tới mục tiêu. Tuy nhiên, hướng dẫn này không đề cập đến việc truyền ngược, đây là cách phổ biến nhất để đào tạo mạng lưới thần kinh, và thay vào đó sử dụng một thuật toán di truyền đơn giản. Khi anh ấy bắt đầu nói về di truyền học, tôi đoán bạn có thể ngừng đọc ...


Cảm ơn tất cả thời gian và nỗ lực để đặt tất cả những từ và suy nghĩ này lại với nhau. Tôi đặc biệt quan tâm đến Convolutional NN để nhận dạng hình ảnh. Tôi đã thử ví dụ nhận diện khuôn mặt trong thư viện OpenCV, nhưng thấy rằng nó chỉ tốt với các đối tượng cứng nhắc. Liệu mạng nơ-ron có giới hạn tương tự đối với nhận dạng vật chất, tức là chỉ giỏi đối với các vật cứng?
dùng1731927

Không có lý do lý thuyết tại sao NN (hoặc CNN cho vấn đề đó) sẽ có giới hạn đối với nhận dạng mẫu của nó, nhưng như bạn đã phát hiện ra, một số vấn đề nhất định dễ học hơn những vấn đề khác. Giống như nhiều vấn đề trong học máy, có lẽ bạn sẽ phải điều chỉnh mô hình của mình một chút để nó có thể giải quyết tốt loại vấn đề cụ thể mà bạn đang cố gắng giải quyết và NN cũng không ngoại lệ.
jlund3

1
Đây là một bài viết thú vị về cách cấu trúc NN tốt hơn để giải quyết các vấn đề lưới 2d như phân loại hình ảnh. axon.cs.byu.edu/~martinez/groupes/678/Papers/science.pdf
jlund3

1
Về mặt thực tế, khó khăn trong việc phân loại chính xác các vật thể thị giác "không cứng nhắc", hay nói một cách khác, các vật thể có các cạnh không có đường kẻ rõ ràng, chính xác là lý do tại sao tự nhiên đã xác định rằng ngụy trang là một chiến lược trốn tránh tuyệt vời. Thức ăn cho suy nghĩ.
mcstar

2

Đó là điều làm bạn bối rối

làm thế nào nó học về những gì trong một hình ảnh.

Những gì có trong một hình ảnh được thể hiện bằng kỹ thuật số bởi các giá trị trong các pixel của hình ảnh. Nếu bạn lấy một ví dụ về màu sắc trong hình ảnh. Pixel có thể có ba giá trị, mỗi giá trị cho ba màu chính - Đỏ, Xanh lục và Xanh lam ( RGB). Một pixel có ( 10,50,100) có nghĩa là nó có các phần tử màu xanh lam 'ít' hơn một pixel có ( 40,50,100). Do đó, trong ảnh, pixel đầu tiên biểu thị một vùng có ít màu xanh hơn. Đây là thông tin mà mạng lưới thần kinh học được, từ một vị trí / vùng của hình ảnh đến vị trí khác và kết thúc là 'biết' những gì trong hình ảnh. Nguyên tắc tương tự được áp dụng cho các tính năng hình ảnh khác (ngoài màu sắc) có thể được sử dụng làm đầu vào cho mạng thần kinh. Xem cái nàycái này cho các khái niệm hình ảnh cơ bản và sau đó chuyển sang cái này để tìm hiểu làm thế nào mạng lưới thần kinh làm việc.


1

Tất cả các vấn đề máy học là như nhau. Bạn có một số dữ liệu đào tạo, tìm hiểu một mô hình đại diện cho dữ liệu này và có khả năng khái quát hóa kiến ​​thức này theo cách bạn phân cụm, phân loại, học với các thuật toán khác nhau.

Trong nhận dạng hình ảnh, bạn lại có một bộ hình ảnh bạn muốn tìm hiểu.

  1. Những hình ảnh này được xử lý trước tiên và một số tính năng được trích xuất từ ​​hình ảnh (rất nhiều lược đồ tính năng hình ảnh có thể có như SIFT, Bag of WORDS) giống như bạn sử dụng pixel và giá trị của chúng.
  2. Cung cấp cho các hình ảnh này với các vectơ tính năng tương ứng cho thuật toán ML của bạn (Mạng thần kinh, SVM hoặc các hình ảnh khác).
  3. Học một mô hình
  4. Sử dụng mô hình này để nhận ra các đối tượng được nhìn thấy đầy đủ trên dữ liệu đào tạo.

Nếu bạn muốn nhận ra nhiều thứ, hãy sử dụng nhiều phân loại cho mỗi thứ.


1

Tôi cũng muốn đề cập rất phổ biến cho các mạng thần kinh tích chập nhận dạng hình ảnh. Đây là một liên kết để giải thích đơn giản về một CNN .

Tóm lại, trong hình ảnh CNN trước tiên được chia thành các tính năng, như các cạnh, hình dạng, bộ sưu tập các hình dạng. Sau đó, các tính năng này được 'đưa' vào một mạng thần kinh đa lớp được kết nối đầy đủ 'thông thường' (perceptionron nhiều lớp).

Chi tiết hơn, một bộ các bộ lọc được áp dụng để trích xuất các tính năng dưới dạng bản đồ tính năng. Bộ lọc chỉ là một ma trận (ngẫu nhiên khi bắt đầu) được áp dụng cho ảnh gốc để sản phẩm chấm của ma trận ảnh gốc và ma trận bộ lọc được tính toán và kết quả được tính tổng. Bộ lọc di chuyển dọc theo hình ảnh gốc một pixel (bước) tại một thời điểm và ma trận bản đồ đặc trưng đang được lấp đầy. Một bản đồ tính năng được tạo cho mỗi bộ lọc. Sau đó, phi tuyến tính được giới thiệu với RELU (Đơn vị tuyến tính chỉnh lưu) cho mỗi pixel trong mỗi bản đồ tính năng. Việc gộp chung, thông qua ứng dụng max (), sum () hoặc Average (), được thực hiện sau khi tích chập. Cuối cùng, các tính năng được trích xuất theo cách này trông giống như các mảnh 'phóng to' của hình ảnh gốc. Các tính năng này được đưa vào mạng thần kinh được kết nối đầy đủ (tất cả các đơn vị được kết nối) và xác suất cho mỗi hình ảnh (giả sử chúng tôi đã đào tạo mạng của chúng tôi về hình ảnh của ô tô, cây cối và thuyền) được tính toán sau mỗi lần truyền qua mạng. Mạng được đào tạo, điều đó có nghĩa là các tham số (trọng số) và ma trận bộ lọc được tối ưu hóa thông qua backpropagation (giảm thiểu lỗi phân loại sai). Khi một hình ảnh mới được đưa vào mạng được đào tạo, chỉ cần có nguồn cấp dữ liệu để xác định hình ảnh (với điều kiện là mạng đủ chính xác, tức là chúng tôi đã đào tạo nó với đủ ví dụ, v.v.) điều đó có nghĩa là các tham số (trọng số) và ma trận bộ lọc được tối ưu hóa thông qua việc truyền ngược (giảm thiểu lỗi phân loại sai). Khi một hình ảnh mới được đưa vào mạng được đào tạo, chỉ cần có nguồn cấp dữ liệu để xác định hình ảnh (với điều kiện là mạng đủ chính xác, tức là chúng tôi đã đào tạo nó với đủ ví dụ, v.v.) điều đó có nghĩa là các tham số (trọng số) và ma trận bộ lọc được tối ưu hóa thông qua việc truyền ngược (giảm thiểu lỗi phân loại sai). Khi một hình ảnh mới được đưa vào mạng được đào tạo, chỉ cần có nguồn cấp dữ liệu để xác định hình ảnh (với điều kiện là mạng đủ chính xác, tức là chúng tôi đã đào tạo nó với đủ ví dụ, v.v.)


0

Thật tốt khi biết ANN có thể tạo bất kỳ hàm f (x) hoặc f (x, y, z, ..) hoặc bất kỳ đa chức năng nào cho vấn đề đó. Nhưng điều quan trọng cần biết là các hàm có giới hạn trong cách chúng có thể phân loại dữ liệu ... có các tập hợp quan hệ phức tạp hơn của các tập hợp vật thể, rất quan trọng trong phân loại và chúng không được mô tả bởi các hàm đó theo cách thanh lịch hoặc tự nhiên, nhưng rất quan trọng trong ngôn ngữ và phân loại đối tượng. ANN có thể thực hiện điều này tuy nhiên là tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.