3

신경망이 축소되거나 크기가 커지는 동안 (노드 수, 연결 수 등) 지속적인 훈련과 정상적인 신경망 제거 방법이 있습니까?크기가 변경되는 동안 신경 네트워크를 학습 할 수 있습니까?

내 기억을 최대한 살리기 위해 신경 네트워크에 대해 읽은 모든 것은 정적 인 관점에서 나온 것입니다. 당신은 그물을 정의하고 그것을 훈련시킵니다.

, 그것은 N이 증가하거나 감소하지만, 네트워크가 여전히 유용하고 수행 할 수 있도록 네트워크 (X)을 훈련 할 수있다 N 노드 일부 신경망 X (어떤 뉴런)이 있다면? 이것은 내가이 비디오의 좋아하는에서 본 뭔가

+1

조금만 추가하면 훈련 중에 네트워크 크기를 변경하는 것이 일반적이지 않습니다. 사실, dropout의 도입은 techiconally 2 조각 무작위로 네트워크를 자르고 원본 네트워크의 절반 만이 특정 순간 (이 기술에 대한 특정 정보를 확인하기 위해 Google 드롭 아웃)에 참여합니다. –

+1

네트워크 아키텍처에서 작동하는 또 다른 인스턴스는 어디입니까? 전송 학습. 네 개의 레이어가있는 네트워크가 있다고 가정 해보십시오. 사진에서 특정 물체를 인식하도록 훈련시킵니다. 마지막 레이어를 잘라내어 세 개의 추가 레이어로 바꾸면 결과적으로이 레이어에 표시되는 6 개 레이어 네트워크를 데이터 집합에 맞춰 교육합니다. 예를 들어이 이미지에 표시되는 내용에 대한 짧은 문장을 볼 수 있습니다.이 경우 트레이닝 자체는 2 부분으로 구성되어 있지만 트레이닝 중에 네트워크 크기를 다시 변경합니다. –

+0

@ MaximHaytovich 드롭 아웃 후에도 사용할 수있는 저장된 지식 (트레이닝이 그물에했는지 여부)을 아는 한, ? 어쩌면 무작위 반을 무작위로 10 번째로 떨어 뜨려 10 번째 단락으로 대체 할 수 있습니다. 그러면 전환 기간 동안 지식 손실이 줄어들 수 있습니다. 다시 : 전송 학습 (두 번째 설명), 마지막 레이어가 삭제되거나 새로운 3 레이어가 방금 추가되면 사용 가능한 인터넷은 얼마나 유용합니까? 이미 훈련 된 레이어의 존재가 무작위 결과보다 더 잘 생성됩니까? 또는 전체 시스템을 재교육해야합니까? – csjohn

답변

4

일반적으로 네트워크가 이미 훈련 된 후에는 네트워크 아키텍처를 변경 (새 레이어 추가, 기존 레이어에 더 많은 뉴런 추가)하는 것이 일반적이며 Deep Learning 도메인에서는 일반적인 작업입니다. 하나의 예는 드롭 아웃입니다 - 훈련 중 절반은 무작위로 완전히 무력화되고 나머지 절반은 특정 반복 (각 반복 또는 '신기원'은 흔히 이름이 지어지기 때문에 뉴런의 다른 무작위 목록이 있음) 동안 훈련에 참여합니다. 또 다른 예는 전송 학습입니다. 한 세트의 입력 데이터에서 네트워크를 학습하고, 앞으로 나올 레이어의 일부를 잘라내어 새 레이어로 대체하고 다른 데이터 세트에서 모델을 다시 배울 수 있습니다.

이유를 더 잘 설명하려면 잠시 후퇴하십시오. 깊은 네트워크에서 숨겨진 레이어가 많은 곳에서 각 레이어는 들어오는 데이터에서 추상화를 학습합니다. 각각의 추가 레이어는 이전 레이어에서 학습 한 추상 표현을 사용하고 그 위에 추상화를 결합하여 더 높은 수준의 데이터 표현을 만듭니다. 예를 들어 DNN으로 이미지를 분류하려고 할 수 있습니다. 첫 번째 레이어는 이미지의 가장자리 또는 점과 같은 간단한 개념을 배우게됩니다. 다음 레이어는이 간단한 개념을 결합하여 삼각형 또는 사각형의 원과 같은 프리미티브를 배울 수 있습니다. 다음 레이어는 그것을 더욱 발전시키고이 기본 요소들을 결합하여 '차'또는 '집'과 같은 이미지에서 찾을 수있는 객체를 표현할 수 있으며 softmax를 사용하면 찾고있는 답변의 확률을 계산할 수 있습니다 (실제로 출력 할 내용). 나는이 사실들과 배운 표현들이 실제로 확인 될 수 있음을 언급 할 필요가있다. 숨겨진 레이어의 활성화를 시각화하여 배운 내용을 볼 수 있습니다. 예를 들어 Google의 '초기 개념화'프로젝트에서이를 수행했습니다. 이를 염두에두고 앞서 언급 한 내용으로 돌아가 보겠습니다.

드롭 아웃은 네트워크의 일반화를 개선하는 데 사용됩니다. 각 뉴런이 이전 레이어의 정보 일부를 사용할 수 있도록 '확실치 않다'고 강요하고 이전 레이어의 덜 유익하고 유익한 추상화에 의존하는 표현을 배우려고합니다. 이전 계층의 모든 표현을 고려하여 모든 요소를 ​​'가장 좋아하는'두 개의 뉴런에 넣는 대신 결정을 내 리도록합니다.이렇게함으로써 네트워크는 일반적으로 입력이 교육 세트와 다른 새로운 데이터를 준비하는 것이 더 좋습니다.

Q : "저장된 지식의 품질은 무엇이든간에 (그물에 대한 교육이 무엇이든간에) 드롭 아웃 이후에도 계속 사용할 수 있습니까? 아마도 무작위 반을 무작위로 10 번으로 대체 할 수 있습니다. 전환 기간 동안 지식 손실이 줄어들 수 있습니다. "

A : 유감스럽게도 정확히 절반의 뉴런이 꺼져 있고 10 % (또는 다른 숫자)가 아닌 이유에 대해 올바르게 대답 할 수 없습니다. 아마 설명이 있지만 나는 그것을 보지 못했을 것이다. 일반적으로 작동하며 그게 전부입니다. 또한 중퇴의 임무는 각 신경 세포가 이전 층의 뉴런 중 몇 개만 고려하지 않고 올바른 결정을 내릴 때 일반적으로 도움이되는 뉴런이 이용 가능하지 않더라도 일부 결정을 내릴 준비가되었음을 밝히는 것입니다. . 이것은 일반화에만 사용되며 네트워크가 이전에 보지 못한 데이터에 더 잘 대처할 수 있도록 도와줍니다.

이제 이전 학습을 다시 생각해 봅시다. 네 개의 레이어가있는 네트워크가 있다고 가정합니다. 사진 (고양이, 개, 테이블, 자동차 등)의 특정 물체를 인식하도록 훈련시킵니다. 마지막 레이어를 잘라내어 세 개의 추가 레이어로 바꾸고 이제는 결과로 얻은 6 계층 네트워크를 데이터 세트로 교육합니다. 예를 들어이 이미지에 표시되는 내용에 대한 짧은 문장을 볼 수 있습니다 ('고양이는 자동차에 있습니다' , '창문이있는 집, 인근 나무'등). 우리가 그런 수술을 한 것은 무엇입니까? 원래의 4 계층 네트워크는 특정 개체가 이미지와 함께 제공되는지 여부를 이해할 수있었습니다. 처음 3 개의 레이어는 이미지의 좋은 표현을 배웠습니다. 첫 번째 레이어는 가능한 가장자리 또는 점 또는 이미지에서 매우 원시적 인 기하학적 모양에 대해 알게되었습니다. 두 번째 레이어는 '원'또는 '정사각형'과 같이 좀 더 정교한 기하학적 인물을 배웠습니다. 마지막 레이어는 이들을 결합하여 좀 더 높은 수준의 객체 인 'car', 'cat', 'house'를 형성하는 방법을 알고 있습니다. 이제 우리는 다른 영역에서 배운이 좋은 표현을 재사용 할 수 있으며 더 많은 레이어를 추가 할 수 있습니다. 각각은 원래 네트워크의 마지막 (3) 레이어의 추상화를 사용하여 이미지를 의미있는 설명으로 만드는 방법을 배웁니다. 이미지를 입력하고 문장을 출력으로 사용하는 새로운 데이터 세트에 대해 학습을 수행하는 동안 원본 네트워크에서 가져온 첫 번째 3 개의 레이어를 조정하지만 이러한 조정은 거의 미미하며 3 개의 새 레이어는 크게 학습하여 조정됩니다. 전달 학습으로 얻은 것은 다음과 같습니다.

1) 우리는 훨씬 더 나은 데이터 표현을 배울 수 있습니다. 우리는 특정 작업을 매우 잘 수행하고 그 네트워크를 기반으로 다른 것을 수행하는 네트워크를 만들 수 있습니다.

2) 우리는 교육 시간을 절약 할 수 있습니다. 네트워크의 첫 번째 레이어는 이미 출력에 가까운 레이어가 이미 우수한 데이터 표현을 얻을 수 있도록 이미 충분히 훈련 된 것입니다. 따라서 훈련은 사전 훈련 된 첫 번째 레이어를 사용하여 훨씬 빨리 완료되어야합니다.

결론적으로 일부 네트워크를 사전 교육하고 다른 네트워크의 일부 또는 전체 네트워크를 재사용하는 것이 이상적이며 일반적인 것은 아닙니다.

+0

Re : 탈락 중에 뉴런의 수를 줄였습니다. 그것은 하이퍼 파라미터입니다. 0.5는 일반적인 설정입니다. – velocirabbit

1

...

https://youtu.be/qv6UVOQ0F44

은 동영상 설명에서 추가 리소스에 대한 링크가 있습니다.

NEAT라는 프로세스를 기반으로합니다. 토폴로지 확장을위한 신경 진화.

유전자 알고리즘과 진화 과정을 사용하여 신경망의 구조 나 복잡성에 대한 사전 가정없이 처음부터 신경망을 설계하고 진화시킵니다.

나는 이것이 당신이 찾고있는 것이라고 생각합니다.

+1

이것은 정확하게 (내 질문은 훌륭하게 언급되지 않았습니다.) 정확하게 의미가있는 것은 아니지만 근사합니다. :). YouTube 비디오에서 나는 Neuroevolution에 대해 더 많이 읽었으며이 논문과 같은 다른 자료를 보았습니다 : https://arxiv.org/pdf/1111.5892.pdf. 나는 실행 (예 : MarIO) 사이에서 네트워크를 발전시키기보다는 네트워크 사용 중 진화를 생각하고있었습니다. 체중 진화와는 다른 시간 척도로 네트워크 토폴로지를 발전시키는 것은 흥미로운 개념입니다. Memetic Algorithms의 도메인 (wikipedia.org/wiki/Memetic_algorithm)도 좋습니다 :). – csjohn

+0

@csjohn 아 좋아. 그건 의미가 있습니다. Tbh 나는 신경망 전문가가 아니다. 아주 관심이 많았고 오른쪽 라인을 따라있을 것 같았습니다. 다행스럽게도 당신을 올바른 방향으로 향하게했습니다. :-) – Fogmeister

관련 문제