2016-06-20 4 views
1

저는 기계 학습에 익숙하며 도움을 구합니다.횃불 - 신경망에 입력 및 출력 크기가 큽니다

참조 : 발가 0이 존재하지 않는 = 경우 [val1과 val2만큼 ... 발 15]

, 1이 경우 나는 다음과 같이 예상 다음 값을 예측하기 위해 네트워크를 훈련하고 싶습니다 존재하지 않습니다.

입력 : [1 1 1 0 0 0 0 0 1 1 1 0 0 0 0]

출력 : [1 1 1 0 0 0 0 0 1 1 1 0 0 1 1] (마지막 두 값 표시)

그래서 내 신경 네트워크는 내가 예측의 종류를 할 수있는 더 좋은 방법이있을 것인지 알고 싶습니다 15 개 입력, 15 개 출력

있을 것입니다. 내 데이터도 정규화가 필요합니까?

이제 문제는 15 가지 값이 없지만 실제로는 600'000입니다. 신경망이 그러한 큰 텐서를 처리 할 수 ​​있습니까? 그리고 나는 숨겨진 층 단위에 대해 두 배의 숫자가 필요할 것이라고 들었습니다.

당신의 도움을 많이 주셔서 감사합니다, 기계 학습 전문가!

베스트

이 신경 네트워크의 개념에 대한 문제가되지 않습니다

답변

1

는 : 문제는 컴퓨팅 구성 및 프레임 워크 구현이 필요한 메모리를 제공하는지 여부입니다. 토폴로지를 설명하지 않았으므로 범위 지정을 도와 줄 수있는 방법이 많지 않습니다. 매개 변수와 가중치 수에 대해 무엇을 가지고 있습니까? 그것들 각각은 적어도 짧은 float (4 바이트)입니다. 예를 들어, 직접 FC (완전 연결) 계층은 (6e5)^2 가중치 또는 3.6e11 * 4 바이트 => 1.44e12 바이트를 제공합니다. 네, 그 레이어의 가중치로 1.5 테라 바이트가 필요합니다.

당신이 선택한 NN의 스타일로이 중 일부를 해결할 수 있습니다. 예를 들어, 별도의 채널 (예 : 1000 개의 기능이있는 60 개의 채널)으로 분할하면 교육 속도 (더 많은 레이어)와 약간의 정확성 (비록 크로스 오버가 많은 부분을 해결할 수 있음)에도 불구하고 상당한 메모리 절감 효과를 얻을 수 있습니다. . 또한 컨볼 루션을 사용하면 전체적인 메모리를 절약 할 수 있습니다.


600K => 4 => 600K 설명 내 주요 걱정을 담당 그건

: 1,200,004 매개 변수와가 4.8m 무게 : 두 곳에서 각각 60 만 개 * 4 무게가있다. 그것은 6M의 총 수레이며, 현대의 범용 컴퓨터의 RAM을 강조해서는 안됩니다.

채널링 아이디어는 600K => 600K FC와 같이 레이어 사이의 연결을 더 잘 채우려는 경우입니다. 이 경우 데이터를 더 작은 그룹 (일반적으로 2-12 개)으로 분할하고 병렬로 완전히 연결된 스트림을 만듭니다. 예를 들어, 입력을 받아 10 개의 스트림을 만들 수 있습니다. 각 스트림은 60K => 60K FC입니다. 다음 단계에서는 60K의 각 세트를 "처리"하여 1/10이 다음 채널로 이동하도록 조직을 바꿉니다.

이렇게하면 10 * 60K * 60K의 가중치를 갖게되고 이전보다 10 % 가량 큽니다. 그러나 이제는 3 개의 레이어가 있습니다. 그래도 무게에 필요한 메모리를 5 배 절약 할 수 있습니다. 여기에서 조합 폭발이 발생합니다.

+0

Hello Prune, 답변 주셔서 감사합니다.나는 지금까지는 기계 학습 언어의 관점에서 아직 그 단계에 있지 않다.) 지금까지 토치를 사용했고 NN은 다음과 같다 : 순차 컨테이너 : 선형 (600K, 4HU) -> ReLu-> 선형 (4,600K) -> SoftMax. 학습 속도가 0.01이고 반복 횟수 (데이터 집합을 통과)는 100입니다. 또한 FC 네트워크 (순차적)입니다. 나는 CNN이 1D 순차 데이터가 아닌 이미지 프로세싱에 더 잘 적응할 것이라고 생각했습니다 ... 600 개의 채널과 1000 개의 기능을 사용하여 데이터를 어떻게 체계적으로 구성해야합니까? 다시 한 번 감사드립니다 – Hetana

+0

"4HU"란 무엇입니까? 네 개의 뉴런으로 된 숨겨진 레이어가있는 것 같습니다. – Prune

+0

예 네 뉴런, 숨겨진 단위 미안. 지금 SparseLinea를 사용하려고합니다. – Hetana