입력 개수가 가변적 일 때 신경망은 어떻게 사용됩니까?
내가 본 신경망의 모든 예는 이미지와 고정 길이 데이터에 잘 작동하는 고정 입력 세트에 대한 것입니다. 문장, 쿼리 또는 소스 코드와 같은 가변 길이 데이터를 어떻게 처리합니까? 가변 길이 데이터를 고정 길이 입력으로 인코딩하고 신경망의 일반화 속성을 얻는 방법이 있습니까?
일반적으로 데이터에서 기능을 추출하여 네트워크에 제공합니다. 일부 데이터 만 가져 와서 네트워크에 공급하는 것은 바람직하지 않습니다. 실제로 사전 처리 및 올바른 기능 선택은 신경망의 성공과 성능을 결정합니다. 불행히도 IMHO는 그것에 대한 감각을 개발하는 데 경험이 필요하며 책에서 배울 수있는 것은 없습니다.
요약 : "Garbage in, garbage out"
나는 거기에 있었고 나는이 문제에 직면했습니다. ANN은 고정 된 특징 벡터 길이를 위해 만들어졌고 KNN, SVM, Bayesian 등과 같은 많은 다른 분류 자도 마찬가지입니다. 즉, 입력 계층이 잘 정의되어야하고 변경되지 않아야합니다. 이것은 설계 문제입니다. 그러나 일부 연구자들은 누락 된 간격을 채우기 위해 0을 추가하는 것을 선택합니다. 개인적으로이 0 (비현실적인 값)이 그물이 수렴 할 가중치에 영향을 미치기 때문에 이것이 좋은 해결책이 아니라고 생각합니다. 또한 0으로 끝나는 실제 신호가있을 수 있습니다.
ANN은 유일한 분류자가 아니며 랜덤 포레스트와 같은 더 많은 것이 있습니다. 이 분류기는 연구원들 사이에서 최고로 간주되며 적은 수의 무작위 기능을 사용하여 배깅을 부트 스트랩하여 수백 개의 의사 결정 트리를 생성합니다. 이것은 잘 작동 할 수 있습니다. 선택한 기능의 수는 일반적으로 기능 벡터 크기의 sqrt입니다. 이러한 기능은 무작위입니다. 각 의사 결정 트리는 솔루션으로 수렴되며, 가장 가능성이 높은 클래스가 선택 될 다수의 규칙을 사용합니다.
또 다른 해결책은 동적 시간 왜곡 DTW를 사용하거나 Hidden Markov 모델 HMM을 사용하는 것보다 더 좋습니다.
또 다른 해결책은 보간, 보간 (작은 신호를 따라 누락 된 값에 대한 보상) 모든 작은 신호를 최대 신호와 동일한 크기로 만드는 것입니다. 보간 방법에는 평균화, B- 스플라인, 큐빅 등이 포함되며 이에 국한되지 않습니다 .... .
또 다른 해결책은 특징 추출 방법을 사용하여 최상의 기능 (가장 독특한)을 사용하는 것입니다. 이번에는 고정 된 크기로 만들고 이러한 방법에는 PCA, LDA 등이 포함됩니다.
또 다른 해결책은 기능 선택 (일반적으로 기능 추출 후)을 사용하여 최상의 정확도를 제공하는 최상의 기능을 쉽게 선택하는 것입니다.
지금은 그게 다입니다. 그 중 아무것도 효과가 없다면 저에게 연락하십시오.
일부 문제는 순환 신경망으로 해결할 수 있습니다. 예를 들어, 일련의 입력에 대한 패리티를 계산하는 데 좋습니다.
계산 패리티 재발 성 신경 네트워크는 하나의 입력 기능을 할 것이다. 비트는 시간이 지남에 따라 공급 될 수 있습니다. 출력은 히든 레이어로도 피드백됩니다. 이를 통해 두 개의 은닉 유닛만으로 패리티를 배울 수 있습니다.
일반적인 피드 포워드 2 계층 신경망은 패리티를 나타 내기 위해 2 ** sequence_length 은닉 유닛이 필요합니다. 이 제한은 2 개의 계층 만있는 모든 아키텍처 (예 : SVM)에 적용됩니다.
나는 그것을하는 한 가지 방법이 입력 (반복 신경망)에 시간 구성 요소를 추가하고 한 번에 청크 (기본적으로 렉서 및 파서와 동등한 신경망 생성)를 네트워크에 스트리밍하는 것입니다. 입력이 상당히 크지 만 서로 다른 입력 시퀀스를 분리하는 중지 기호가 반드시 있어야하는 것은 아니라는 단점이 있습니다 (감정에서 마침표와 동일).
크기가 다른 이미지에 신경망을 사용하기 위해 이미지 자체가 종종 잘리고 네트워크 입력에 더 잘 맞도록 확대 또는 축소됩니다. 나는 그것이 당신의 질문에 실제로 답하지 않는다는 것을 알고 있지만 아마도 입력에 대한 일종의 변환 기능을 사용하여 다른 유형의 입력에서도 비슷한 것이 가능할 것입니까?
확실하지는 않지만 최대 입력 수를 사용합니다 (예 : 단어의 경우 45 자 (위키 백과에 따르면 사전에서 찾은 가장 긴 단어)보다 긴 단어가 없다고 말할 수 있습니다). 단어가 발견되면 다른 입력을 공백 문자로 설정하십시오.
또는 이진 데이터를 사용하여 0으로 설정합니다.이 접근 방식의 유일한 문제는 공백 문자 / 제로 / 무엇이든 입력이 유효한 전체 길이 입력과 충돌하는 경우입니다 (숫자 문제가 아닌 단어 문제).
'Programing' 카테고리의 다른 글
발표자가 활동 / 컨텍스트에 대한 지식을 가지고있는 것이 MVP 패턴에서 나쁜 생각입니까? (0) | 2020.12.31 |
---|---|
SQL Server 작업이 이미 실행중인 경우 예약 된 실행을 건너 뛰나요? (0) | 2020.12.31 |
: = vs = 만들기 매크로 (0) | 2020.12.31 |
서버에서 보낸 이벤트와 폴링 (0) | 2020.12.31 |
d3 원에 텍스트 추가 (0) | 2020.12.31 |