5

Làm thế nào để ngăn chặn một mạng thần kinh chuyển hóa lười biếng? Tôi kết thúc bằng ‘CNN lười biếng’ sau khi tập luyện với KERAS. Bất kể đầu vào là gì, đầu ra là hằng số. bạn nghĩ vấn đề là gì?Làm thế nào để ngăn chặn một mạng lưới thần kinh chuyển hóa lười biếng?

Tôi cố gắng lặp lại một thử nghiệm về Kết thúc học tập kết thúc của NVIDIA cho xe tự lái the paper. Tuyệt đối, tôi không có xe hơi thực sự nhưng là simulator của Udacity. Trình mô phỏng tạo ra các số liệu về nền trước của một chiếc xe hơi.

enter image description here

Một CNN nhận con số này, và nó mang lại cho góc lái để giữ xe ở đường đua. Các quy tắc của trò chơi là để giữ cho chiếc xe mô phỏng chạy trong ca khúc một cách an toàn. Nó không phải là rất khó khăn.

Điều kỳ lạ đôi khi tôi kết thúc bằng CNN lười biếng sau khi đào tạo nó với KERAS, cho phép góc lái liên tục. Chiếc xe mô phỏng sẽ đi ra khỏi lừa, nhưng đầu ra của CNN không có thay đổi. Đặc biệt là lớp được sâu hơn, ví dụ: CNN trong the paper.

Nếu tôi sử dụng CNN như thế này, tôi có thể có được một mô hình hữu ích sau khi đào tạo.

model = Sequential() 
model.add(Lambda(lambda x: x/255.0 - 0.5, input_shape = (160,320,3))) 
model.add(Cropping2D(cropping=((70,25),(0,0)))) 
model.add(Conv2D(24, 5, strides=(2, 2))) 
model.add(Activation('relu')) 
model.add(Conv2D(36, 5, strides=(2, 2))) 
model.add(Activation('relu')) 
model.add(Conv2D(48, 5, strides=(2, 2))) 
model.add(Activation('relu')) 
model.add(Flatten()) 
model.add(Dense(50)) 
model.add(Activation('sigmoid')) 
model.add(Dense(10)) 
model.add(Activation('sigmoid')) 
model.add(Dense(1)) 

Nhưng nếu tôi sử dụng CNN sâu hơn, tôi có nhiều cơ hội nhận CNN lười hơn. Cụ thể, nếu tôi sử dụng CNN thích NVIDIA, tôi gần như nhận được CNN lười biếng sau mỗi lần đào tạo.

model = Sequential() 
model.add(Lambda(lambda x: x/255.0 - 0.5, input_shape = (160,320,3))) 
model.add(Cropping2D(cropping=((70,25),(0,0)))) 
model.add(Conv2D(24, 5, strides=(2, 2))) 
model.add(Activation('relu')) 
model.add(Conv2D(36, 5, strides=(2, 2))) 
model.add(Activation('relu')) 
model.add(Conv2D(48, 5, strides=(2, 2))) 
model.add(Activation('relu')) 
model.add(Conv2D(64, 3, strides=(1, 1))) 
model.add(Activation('relu')) 
model.add(Conv2D(64, 3, strides=(1, 1))) 
model.add(Activation('relu')) 
model.add(Flatten()) 
model.add(Dense(1164)) 
model.add(Activation('sigmoid')) 
model.add(Dense(100)) 
model.add(Activation('sigmoid')) 
model.add(Dense(50)) 
model.add(Activation('sigmoid')) 
model.add(Dense(10)) 
model.add(Activation('sigmoid')) 
model.add(Dense(1)) 

Tôi sử dụng ‘relu’ cho các lớp convolution và chức năng kích hoạt cho lớp được kết nối đầy đủ là ‘sigmoid’. Tôi cố gắng thay đổi chức năng kích hoạt, nhưng không có hiệu lực.

Có phân tích của tôi. Tôi không đồng ý với một lỗi trong chương trình của tôi bởi vì tôi có thể lái xe thành công với cùng một mã số và một CNN đơn giản hơn. Tôi nghĩ lý do là giả lập hoặc cấu trúc của mạng thần kinh. Trong một chiếc xe tự lái thực sự, tín hiệu đào tạo, đó là góc lái, nên có tiếng ồn; do đó, người lái xe không bao giờ giữ bánh xe vẫn còn trên đường thực. Nhưng trong giả lập, tín hiệu đào tạo rất sạch sẽ. Gần 60% góc lái là 0. Trình tối ưu hóa có thể dễ dàng thực hiện công việc bằng cách chuyển đầu ra của CNN gần bằng không. Có vẻ như người tối ưu hóa cũng lười biếng. Tuy nhiên, khi chúng ta thực sự muốn CNN xuất ra một cái gì đó, nó cũng cho số không. Vì vậy, tôi thêm tiếng ồn nhỏ cho các góc lái không. Cơ hội mà tôi nhận được một CNN lười biếng là nhỏ hơn, nhưng nó không biến mất.

Bạn nghĩ sao về phân tích của tôi? Có chiến lược nào khác mà tôi có thể sử dụng không? Tôi tự hỏi liệu các vấn đề tương tự đã được giải quyết trong lịch sử lâu dài của nghiên cứu CNN hay chưa.

nguồn:

Các tập tin có liên quan đã được tải lên GitHub. Bạn có thể lặp lại toàn bộ thử nghiệm với những tệp này.

+0

Các tệp liên quan đã được tải lên [GitHub] https://github.com/BlueBirdHouse/CarND-Behavioral-Cloning-P3/. Bạn có thể lặp lại toàn bộ thử nghiệm với những tệp này. –

+0

Vui lòng không sử dụng không gian nhận xét để cập nhật câu hỏi - chỉnh sửa bài đăng thay vì – desertnaut

Trả lời

1

Tôi không thể chạy mô hình của bạn, bởi vì cả câu hỏi không phải là repo GitHub chứa dữ liệu. Đó là lý do tại sao tôi chắc chắn 90% câu trả lời của tôi.

Nhưng tôi nghĩ rằng vấn đề chính của mạng là chức năng kích hoạt sigmoid sau các lớp dày đặc. Tôi cho rằng, nó sẽ đào tạo tốt khi chỉ có hai trong số họ, nhưng bốn là quá nhiều.

Thật không may, giấy End to End Learning for Self-Driving Cars của NVIDIA không xác định nó một cách rõ ràng, nhưng những ngày này kích hoạt mặc định là không còn sigmoid (như trước đây), nhưng relu. Xem this discussion nếu bạn quan tâm vì sao lại như vậy. Vì vậy, giải pháp mà tôi đang đề xuất là thử mô hình này:

model = Sequential() 
model.add(Lambda(lambda x: x/255.0 - 0.5, input_shape = (160,320,3))) 
model.add(Cropping2D(cropping=((70,25),(0,0)))) 
model.add(Conv2D(24, (5, 5), strides=(2, 2), activation="relu")) 
model.add(Conv2D(36, (5, 5), strides=(2, 2), activation="relu")) 
model.add(Conv2D(48, (5, 5), strides=(2, 2), activation="relu")) 
model.add(Conv2D(64, (3, 3), strides=(1, 1), activation="relu")) 
model.add(Conv2D(64, (3, 3), strides=(1, 1), activation="relu")) 
model.add(Flatten()) 
model.add(Dense(1164, activation="relu")) 
model.add(Dense(100, activation="relu")) 
model.add(Dense(50, activation="relu")) 
model.add(Dense(10, activation="relu")) 
model.add(Dense(1)) 

Nó bắt chước kiến ​​trúc mạng của NVidia và không bị biến mất dần.

+0

Cảm ơn bạn rất nhiều vì đã đề xuất. Tôi đang làm việc trên một vấn đề đáng buồn khác những ngày này. Bỏ qua những người khác là rất nghiêm trọng trong một số nền văn hóa. Tôi không bỏ qua, nhưng tâm trí nhỏ bé của tôi không thể xử lý quá nhiều thông điệp. Tôi sẽ trở lại. –

+0

Sự tự tin 90% của bạn là đúng. Mạng lưới thần kinh chuyển mạch lười biếng đã biến mất. Cảm ơn bạn. Dường như tôi có vấn đề về biến mất. Nếu gradient không thể đi qua mạng, trình tối ưu hóa phải hoàn thành công việc thông qua việc cung cấp một CNN lười biếng! Có thể, nhưng tôi nghĩ lý do chi tiết đáng để nghiên cứu. –

Các vấn đề liên quan