마인드 맵 갤러리 딥러닝 이론 지식
내용의 일부가 축소되어 있으며, 총 1216개의 모듈이 포함되어 있습니다. 사이토 야스키의 두 권의 저서 "딥 러닝 입문: Python 기반 이론 및 구현"과 "고급 딥 러닝: 자연어 처리 저자: [일본어] 사이토 야스키 역자: 루 유지에"를 기반으로 합니다. 지금까지 읽은 딥러닝 입문에 가장 적합한 책입니다. Li Mu의 "Hands-On Deep Learning"을 공부하기 전에 강력히 추천합니다! 안에 들어있는 내용은 기본 지식이 필요하지 않으며 고등학생도 이해할 수 있습니다.
2024-02-04 00:57:48에 편집됨이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
딥러닝 이론 지식
소개
기본 개념
딥러닝 문제는 머신러닝 문제로 제한된 예시로부터 알고리즘을 통해 일반 규칙을 요약하고 이를 알려지지 않은 새로운 데이터에 적용하는 것을 말합니다.
기존 기계 학습과 달리 딥 러닝에 사용되는 모델은 일반적으로 더 복잡합니다.
원래 입력에서 출력 대상으로의 데이터 흐름은 여러 선형 또는 비선형 구성 요소를 통과합니다. 각 구성 요소는 정보를 처리하고 결과적으로 후속 구성 요소에 영향을 미칩니다.
최종적으로 출력을 얻었을 때 각 구성 요소가 얼마나 기여하는지 정확히 알 수 없습니다. 이 질문을 기여라고 합니다. 할당 문제.
기여 배분 문제는 종종 학점 배분 문제 또는 학점 배분 문제로 번역되기도 합니다.
기여도 할당 문제는 각 구성 요소의 매개 변수를 어떻게 학습할지와 관련된 매우 중요한 문제입니다.
현재 기여분배 문제를 더 잘 해결할 수 있는 모델은 인공신경망(ANN)이다.
신경망과 딥러닝은 동등하지 않습니다. 딥러닝은 신경망 모델이나 다른 모델을 사용할 수 있습니다(예: 심층 신념 네트워크는 확률 그래프 모델입니다).
일체 포함
AI 기본 개념
스마트 컨셉
자연 지능
정의
인간과 일부 동물의 힘과 행동 능력을 나타냅니다.
타고난 인간 지능
사고과정과 정신활동을 통해 나타나는 객관적 세계를 이해하는 인간의 종합적인 능력이다.
지능에 대한 다양한 관점과 계층
보다
마음의 이론
지능은 사고활동에서 나온다
지식 임계값 이론
지능은 적용 가능한 지식에 달려 있다
진화론
지능은 점진적인 진화를 통해 달성될 수 있다
계층
지능에 포함된 특징적인 능력
지각
기억력과 사고력
학습과 적응력
용량
인공 지능 개념
설명하다
인공적인 방법을 사용하여 기계 지능 달성
지능형 기계나 시스템을 구축하는 방법과 인공지능을 시뮬레이션 및 확장하는 방법을 연구합니다.
튜링 테스트
AI 연구의 기본 내용
인공지능의 주체 위치
자연과학과 사회과학의 교차점
핵심: 사고와 지능
기초과목 : 수학, 사고과학, 컴퓨터
뇌과학과 인지과학의 학제간 연구
지능형 시뮬레이션 방법 및 기술 연구
기계 인식
비전
듣기
기계적인 사고
기계 학습
기계 동작
도메인 분류
지각: 즉, 외부 자극 정보(시각 및 음성 등)를 인지하고 처리하는 인간의 지각 능력을 시뮬레이션합니다. 주요 연구분야는 음성정보처리와 컴퓨터비전 등이다.
학습: 인간의 학습 능력을 시뮬레이션하며 주로 사례를 통해 학습하거나 환경과 상호 작용하는 방법을 연구합니다. 주요 연구 분야로는 지도 학습, 비지도 학습, 강화 학습이 있습니다.
인지: 인간의 인지 능력을 시뮬레이션합니다. 주요 연구 분야에는 지식 표현, 자연어 이해, 추론, 계획, 의사 결정 등이 포함됩니다.
역사
다양한 AI 연구 학교
상징주의
논리주의, 심리학 학교 또는 컴퓨터 학교라고도 알려진 상징주의. 인간 지능의 기능을 분석한 후 컴퓨터를 통해 이러한 기능을 구현합니다.
기본 가정
정보는 기호를 사용하여 표현될 수 있습니다.
명시적인 규칙(예: 논리 연산)을 통해 기호를 조작할 수 있습니다.
인간의 인지 과정은 상징적 조작 과정으로 볼 수 있습니다. 인공지능의 추론 시대와 지식 시대에는 상징적 방법이 더 대중화되고 많은 성과를 거두었다.
연결주의
생체 공학 학교 또는 생리학 학교라고도 알려진 연결주의는 인지 과학 분야의 정보 처리 방법 및 이론의 한 유형입니다.
인지과학 분야에서 인간의 인지과정은 정보처리 과정으로 간주될 수 있다. 연결주의는 인간의 인지 과정이 상징적 연산이 아니라 다수의 단순한 뉴런으로 구성된 신경망의 정보 처리 과정이라고 믿습니다.
따라서 연결주의 모델의 주요 구조는 비선형성, 분산, 병렬화, 로컬 컴퓨팅 및 적응성의 특성을 갖는 수많은 간단한 정보 처리 장치로 구성된 상호 연결된 네트워크입니다.
행동주의
행동주의는 인공 지능이 사이버네틱스에서 유래한다고 믿습니다.
딥러닝 외에도 머신러닝 분야에는 현재 또 다른 흥미로운 기술인 강화학습이 있습니다.
에이전트(Agent)가 지속적으로 다양한 행동(Action)을 하고, 상태(State)를 변경하며, 환경(Enviroment)과 상호작용하여 다양한 보상(Reward)을 얻을 수 있도록 적절한 보상(Reward) 규칙을 설계하면 됩니다. 에이전트는 지속적인 시행착오를 통해 적절한 전략을 학습할 수 있습니다.
신경망
뇌 신경망
인공 신경망
신경망의 발전 역사
제안된 모델
1943년부터 1969년까지의 기간은 신경망 개발의 첫 번째 정점이었습니다. 이 기간 동안 과학자들은 많은 뉴런 모델과 학습 규칙을 제안했습니다.
1943년에 심리학자 Warren McCulloch와 수학자 Walter Pitts는 이상화된 인공 신경망을 처음으로 설명하고 간단한 논리 연산을 기반으로 하는 컴퓨팅 메커니즘을 구축했습니다. 그들이 제안한 신경망 모델을 MP 모델이라고 합니다.
빙하 시대
1969년부터 1983년까지 신경망의 최초 저수준 개발이 이루어졌습니다. 계곡 기간. 이 기간 동안 신경망에 대한 연구는 수년 동안 침체되고 침체된 상태였습니다.
1969년에 Marvin Minsky는 "퍼셉트론"이라는 책을 출판하여 신경망의 두 가지 주요 결함을 지적했습니다. 첫 번째는 퍼셉트론이 XOR 루프 문제를 처리할 수 없다는 것이고, 두 번째는 당시 컴퓨터가 대규모 처리를 지원할 수 없다는 것입니다. 신경망에는 컴퓨팅 성능이 필요합니다.
1974년 하버드 대학교의 폴 웨보스(Paul Webos)가 역전파 알고리즘(BP)을 발명했지만 당시에는 마땅한 관심을 받지 못했습니다.
역전파 알고리즘으로 인한 르네상스
1983~1995. 역전파 알고리즘은 신경망에 대한 관심을 다시 불러일으켰습니다.
Caltech 물리학자 John Hopfield는 Hopfield 네트워크라고 불리는 연관 메모리 및 최적화 계산을 위한 신경 네트워크를 제안했습니다. Hopfield 네트워크는 순회 판매원 문제에 대해 당시 최고의 결과를 달성하여 센세이션을 일으켰습니다.
David Rumelhart와 James McClelland는 신경 활동의 컴퓨터 시뮬레이션에 연결론을 적용하는 방법에 대한 포괄적인 논의를 제공하고 역전파 알고리즘을 재발명합니다.
인기 하락
1995~2006. 지원 벡터 머신과 기타 간단한 방법(예: 선형 분류기)은 머신러닝 분야에서 인기가 점차 신경망을 능가하고 있습니다.
딥러닝의 등장
2006년 ~ 현재. 다층 피드포워드 신경망은 층별로 사전 훈련된 다음 역전파 알고리즘을 사용하여 미세 조정할 수 있습니다. 효과적으로 배우세요.
기계 학습
데이터 전처리
노이즈 제거 등 데이터 전처리 후 예를 들어 텍스트 분류에서 불용어 제거 등이 있습니다.
특징 추출
원시 데이터에서 몇 가지 효과적인 특징을 추출합니다. 예를 들어 이미지 분류에서는 가장자리 추출, SIFT(Scale Invariant Feature Transform) 기능 등이 있습니다.
기능 변환
차원 축소 및 차원 향상과 같은 기능에 대한 특정 처리를 수행합니다. 차원 축소에는 특징 추출과 특징 선택이라는 두 가지 접근 방식이 포함됩니다. 일반적으로 사용되는 특징 변환 방법에는 주성분 분석(PCA), 선형 판별 분석(선형 판별 분석) 등이 있습니다.
예측하다
머신러닝의 핵심, 함수를 통한 예측
학습을 나타냅니다
머신러닝 시스템의 정확성을 높이기 위해 입력 정보를 효과적인 특징으로 변환합니다.
효과적인 특징을 자동으로 학습하여 최종 머신러닝 모델의 성능을 향상시킬 수 있는 알고리즘이 있다면 이러한 학습을 표현학습(Representation Learning)이라고 할 수 있습니다.
표시 방법
현지 대표
색상을 표현하는 한 가지 방법은 서로 다른 이름으로 서로 다른 색상의 이름을 지정하는 것입니다.
차원이 높아 확장할 수 없습니다. 서로 다른 색상 간의 유사도는 0입니다.
분산 표현
색상을 표현하는 RGB 값
좋은 상위 수준 의미 표현(일반적으로 분산 표현)을 학습하려면 일반적으로 하위 수준 기능에서 시작하여 이를 얻기 위해 여러 단계의 비선형 변환을 거쳐야 합니다.
딥러닝
단계
기여도 분배 문제
'얕은 학습'과 달리 딥러닝이 해결해야 할 핵심 문제는 기여도 분배다.
다음 바둑 게임을 예로 들어 보겠습니다. 게임을 할 때마다 최종 결과는 승리 또는 패배입니다. 어떤 수들이 최종 승리로 이어졌고, 어떤 수들이 최종 패배로 이어졌는지 생각해 보겠습니다. 각 행의 기여도를 어떻게 판단하느냐는 기여도 배분의 문제인데, 이 역시 매우 어려운 문제이다.
어떤 의미에서는 딥러닝도 일종의 강화학습(RL)이라고 볼 수 있는데, 각 내부 구성요소는 직접 감독 정보를 얻을 수 없고, 전체 모델의 최종 감독 정보(보상)를 통해 얻어야 하며, 특정 지연.
신경망 모델은 기여 분포 문제를 더 잘 해결할 수 있는 오류 역전파 알고리즘을 사용할 수 있습니다.
엔드투엔드 학습
전통적인 학습 스타일
일부 복잡한 작업에서 기존 기계 학습 방법은 작업의 입력과 출력을 인위적으로 여러 하위 모듈(또는 여러 단계)로 나누고 각 하위 모듈을 별도로 학습해야 합니다.
예를 들어, 자연어 이해 작업에는 일반적으로 단어 분할, 품사 태깅, 구문 분석, 의미 분석, 의미 추론과 같은 단계가 필요합니다.
이런 학습 방식에는 두 가지 문제가 있습니다.
첫째, 각 모듈은 개별적으로 최적화되어야 하며, 최적화 목표와 전체 미션 목표가 일관성을 보장하지 않습니다.
두 번째는 오류 전파입니다. 즉, 이전 단계의 오류가 후속 모델에 큰 영향을 미칩니다. 이로 인해 기계 학습 방법을 실제로 적용하기가 어려워집니다.
새로운 학습 방식
엔드투엔드 학습(End-to-End Learning)은 엔드투엔드 트레이닝(end-to-end training)으로도 알려져 있으며, 학습 과정 중 모듈이나 단계에서 트레이닝을 실시하지 않고 직접적으로 과제를 최적화하는 전반적인 목표를 말합니다.
일반적으로 다양한 모듈이나 단계의 기능을 명시적으로 부여할 필요가 없으며 중간 프로세스에 사람의 개입이 필요하지 않습니다.
신경망 모델을 활용한 대부분의 딥러닝도 엔드투엔드 학습이라고 볼 수 있습니다.
일반적으로 사용되는 딥러닝 프레임워크
Theano: Theano 프로젝트를 효율적으로 정의, 최적화 및 실행하는 데 사용되는 몬트리올 대학의 Python 툴킷은 현재 유지 관리가 종료되었습니다. 다차원 배열 데이터는 수학적 표현에 해당합니다. Theano는 GPU와 효율적인 기호를 투명하게 사용할 수 있습니다. 미분.
Caffe: 전체 이름은 Convolutional Architecture for Fast Feature Embedding입니다. 구현할 네트워크 구조는 구성 파일에서 지정할 수 있으며 코딩이 필요하지 않습니다. Caffe는 C와 Python으로 구현되었으며 주로 컴퓨터 비전에 사용됩니다.
TensorFlow: Google이 개발한 Python 툴킷으로 CPU 또는 GPU가 있는 모든 기기에서 실행될 수 있습니다. TensorFlow의 계산 과정은 데이터 흐름 그래프를 사용하여 표현됩니다. Tensor Flow의 이름은 계산 과정에서 연산 객체가 다차원 배열, 즉 텐서라는 사실에서 유래되었습니다.
Chainer: 동적 컴퓨팅 그래프를 사용하는 최초의 신경망 프레임워크 중 하나입니다. 핵심 개발 팀은 일본의 기계 학습 스타트업인 Preferred Networks입니다. Tensorflow, Theano, Caffe 및 기타 프레임워크에서 사용되는 정적 계산 그래프와 비교하여 동적 계산 그래프는 런타임에 계산 그래프를 동적으로 구성할 수 있으므로 일부 복잡한 의사 결정 또는 추론 작업에 매우 적합합니다.
PyTorch5: Facebook, NVIDIA, Twitter 및 기타 회사에서 개발하고 유지 관리하는 딥 러닝 프레임워크로, 그 전신은 Lua 언어의 Torch6입니다. PyTorch는 동적 컴퓨팅 그래프를 기반으로 한 프레임워크이기도 하며, 신경망 구조를 동적으로 변경해야 하는 작업에서 확실한 이점을 제공합니다.
이 책의 구성
퍼셉트론
퍼셉트론은 입력과 출력이 있는 알고리즘입니다. 입력이 주어지면 주어진 값이 출력됩니다.
퍼셉트론은 가중치와 편향을 매개변수로 설정합니다.
AND 게이트, OR 게이트와 같은 논리 회로는 퍼셉트론을 사용하여 표현할 수 있습니다.
XOR 게이트는 단일 레이어 퍼셉트론으로 표현할 수 없습니다.
XOR 게이트는 2층 퍼셉트론을 사용하여 표현될 수 있습니다.
단일 레이어 퍼셉트론은 선형 공간만 표현할 수 있는 반면, 다층 퍼셉트론은 비선형 공간을 표현할 수 있습니다.
2계층 퍼셉트론은 (이론적으로) 컴퓨터를 나타낼 수 있습니다.
신경망
퍼셉트론과 신경망
"순진한 퍼셉트론"은 단일 계층 네트워크와 계단 함수를 활성화 함수로 사용하는 모델을 나타냅니다.
"다층 퍼셉트론"은 신경망, 즉 시그모이드 함수나 ReLU 함수와 같은 원활한 활성화 함수를 사용하는 다층 신경망을 말합니다.
연산: 신경망의 내적
Y = np.dot(X, W)
신경망은 행렬 연산을 사용하여 효율적으로 구현할 수 있습니다.
아핀 레이어
신경망의 순전파(forward propagation)에서 수행되는 행렬 곱 연산을 기하학 분야에서는 "아핀 변환(affine Transformation)"이라고 합니다.
아핀 변환에는 선형 변환과 변환이 있는데, 각각 신경망의 가중합 연산과 오프셋 연산에 해당한다.
Y = 시그모이드(Y)
출력 레이어
활성화 함수: 회귀 문제에는 항등 함수를 사용하고, 분류 문제에는 소프트맥스 함수를 사용합니다.
신원 기능
입력 신호는 변경되지 않고 출력됩니다.
소프트맥스 함수
출력 레이어에 총 n개의 뉴런이 있다고 가정하고 k번째 뉴런의 출력 yk를 계산합니다.
특징: 출력 레이어의 출력 값의 합은 1입니다.
참고: 오버플로 문제
수량
분류 문제
일반적으로 카테고리 수에 따라 설정됩니다.
필기 숫자 인식
입력 레이어에는 28*28=784개의 뉴런이 있고, 출력 레이어에는 10개의 뉴런이 있습니다. 또한 두 개의 은닉층이 있으며 뉴런 수는 임의의 값이 될 수 있습니다.
일괄 처리
여러 데이터 세트를 한 번에 입력
신경망 학습
손실 함수
개념 소개
최적의 매개변수(가중치 및 편향)를 찾을 때 손실 함수의 값을 최대한 작게 만드는 매개변수를 찾고 있으므로 매개변수의 미분(정확하게는 기울기)을 계산해야 합니다.
인식 정확도를 지표로 직접 활용하면 어떨까요?
매개변수의 미분은 대부분의 장소에서 0이 됩니다.
활성화 함수와 마찬가지로 단계 함수에도 적용됩니다.
유형
평균 제곱 오차
교차 엔트로피 오류
미니배치
일부 테스트 데이터 추출
구배
모든 변수의 편도함수로 합산된 벡터를 기울기(gradient)라고 합니다.
기울기가 나타내는 방향은 각 지점의 함수값이 가장 많이 감소하는 방향입니다.
초매개변수
수동 설정
학습률 n
미니배치 크기
업데이트 횟수 iters_num
얻은 훈련
가중치 w 및 편향 세타
신경망
가중치 매개변수에 대한 손실 함수의 기울기
시대
사이클 수/미니배치 크기
확률적 경사하강법(SGD)
무작위로 선택한 데이터에 대해 경사하강법을 수행합니다.
오류 역전파 방법
수치 미분은 간단하고 구현하기 쉽지만 계산하는 데 시간이 많이 걸린다는 단점이 있습니다. 가중치 매개변수의 기울기를 효율적으로 계산할 수 있는 방법이 있습니다: 오류 역전파 방법
계산 그래프
계산 그래프를 이용하여 계산 과정을 직관적으로 파악할 수 있습니다.
계산 그래프의 순방향 전파는 일반적인 계산을 수행합니다. 계산 그래프를 역전파함으로써 각 노드의 도함수를 계산할 수 있습니다.
레이어 l의 오차항은 레이어 l 1의 오차항으로 계산할 수 있습니다. 얻은 결과는 오류의 역전파입니다.
공식
계산하다
노란색의 양은 역전파 중에 얻은 값입니다.
녹색 수량은 알려진 수량입니다.
신경망의 구성 요소를 레이어로 구현함으로써 기울기를 효율적으로 계산할 수 있습니다.
수치미분을 통해 얻은 결과와 오류 역전파 방식을 비교함으로써 오류 역전파 방식의 구현이 올바른지 확인할 수 있습니다(기울기 확인).
참고영상
https://www.bilibili.com/video/BV1LM411J7cW/?spm_id_from=333.788&vd_source=048c7bdfe54313b8b3ee1483d9d07e38
컨벌루션 신경망
모든 것은 가능한 한 단순해야 하지만 너무 단순해서는 안 됩니다. [알버트 아인슈타인]
전체 프레임
비교됨
완전 연결 계층(Affine 계층) 기반 네트워크
CNN 기반 네트워크
링크 순서
컨볼루션[컨볼루션 레이어]-ReLU-(풀링[풀링 레이어])
출력에 가까운 레이어는 이전 Affine [affine 변환] - ReLU 조합을 사용합니다.
최종 출력 레이어는 이전 Affine-Softmax 조합을 사용합니다.
컨볼루션 레이어
컨볼루션 개념
완전 연결 계층의 문제
데이터의 모양은 "무시"됩니다. 이미지는 일반적으로 높이, 길이, 채널 방향이 3차원 모양이지만, 3차원 데이터를 입력할 때 1차원 데이터로 평면화해야 합니다.
이미지는 3차원 형태이며, 이 형태에는 중요한 공간 정보가 포함되어야 합니다.
공간적으로 인접한 픽셀은 비슷한 값을 갖습니다.
RBG의 각 채널은 서로 밀접하게 관련되어 있습니다.
멀리 떨어져 있는 픽셀 사이에는 상관관계가 거의 없습니다.
컨벌루션 레이어는 모양을 변경하지 않고 유지할 수 있습니다.
정의
컨볼루션 레이어의 입력 및 출력 데이터를 특징 맵이라고 합니다.
컨벌루션 레이어의 입력 데이터를 입력 특징 맵이라고 합니다.
출력 데이터를 출력 특징 맵이라고 합니다.
컨볼루션 연산
컨벌루션 작업은 이미지 처리의 필터 작업과 동일합니다.
컨볼루션의 주요 기능은 이미지(또는 일부 기능)에 컨볼루션 커널(예: 필터)을 슬라이드하고 컨볼루션 작업을 통해 새로운 기능 세트를 얻는 것입니다.
2차원
이미지 X ∈ R(M×N)과 필터 W ∈ R이 주어지면 (m×n), 일반적으로 m << M, n << N, 컨볼루션은 다음과 같습니다.
입체적인
상관관계
컨볼루션을 계산하는 과정에서 컨볼루션 커널을 뒤집어야 하는 경우가 종종 있습니다.
뒤집기는 2차원(위에서 아래, 왼쪽에서 오른쪽)으로 순서를 바꾸는 것, 즉 180도 회전하는 것입니다.
구체적인 구현 측면에서는 컨볼루션 대신 상호 상관 연산을 사용하므로 불필요한 연산이나 오버헤드가 줄어듭니다.
상호 상관은 일반적으로 슬라이딩 윈도우 내적 계산을 사용하여 구현되는 두 계열 간의 상관 관계를 측정하는 함수입니다.
이미지 X ∈ R(M×N)과 컨볼루션 커널 W ∈ R이 주어지면 (m×n), 상호 상관은 다음과 같습니다.
상호 상관과 컨볼루션의 차이점은 컨볼루션 커널이 뒤집혔는지 여부뿐입니다. 상호상관은 비플립 컨볼루션(non-flip convolution)이라고도 합니다.
컨볼루션은 특징 추출을 위해 신경망에서 사용됩니다. 컨볼루션 커널의 반전 여부는 특징 추출 기능과 관련이 없습니다. 특히 컨볼루션 커널이 학습 가능한 매개변수인 경우 컨볼루션과 상호 상관은 동일합니다.
컨볼루션의 변형
제로 패딩
공간 크기를 일정하게 유지하려면 입력 데이터를 채워야 합니다.
보폭
필터가 적용되는 위치의 간격을 보폭이라고 합니다.
일반적으로 사용되는 컨볼루션
좁은 컨볼루션(Narrow Convolution): 단계 크기 s = 1, 양쪽 끝에 제로 패딩 없음 p = 0, 컨볼루션 후 출력 길이는 n − m 1입니다.
넓은 컨볼루션(Wide Convolution): 단계 크기 s = 1, 양쪽 끝의 제로 패딩 p = m − 1, 컨볼루션 후 출력 길이는 n m − 1입니다.
동일 너비 컨볼루션: 단계 크기 s = 1, 양쪽 끝의 제로 패딩 p = (m −1)/2, 컨볼루션 후 출력 길이 n.
컨볼루션의 수학적 특성
3D 데이터에 대한 컨볼루션 연산
입력 데이터와 필터 채널 번호는 동일한 값으로 설정되어야 합니다.
다중 컨볼루션 작업
Convolution 연산의 필터에 관해서도 필터 개수를 고려해야 합니다. 따라서 4차원 데이터로서 필터의 가중치 데이터는 (output_channel, input_channel, height, width) 순으로 작성되어야 한다. 예를 들어 채널번호가 3이고 크기가 5×5인 필터가 20개 있다면 (20, 3, 5, 5)로 쓸 수 있다.
일괄 처리
컨볼루션 작업도 일괄 처리에 해당하기를 바랍니다. 그러기 위해서는 각 레이어 사이에 전달되는 데이터를 4차원 데이터로 저장해야 합니다. 구체적으로는 (batch_num, 채널, 높이, 너비) 순으로 데이터가 저장됩니다.
컨벌루션 레이어의 속성
로컬 연결: 컨벌루션 레이어(l번째 레이어로 가정)의 각 뉴런은 다음 레이어(l-1 레이어)의 로컬 윈도우에 있는 뉴런에만 연결되어 로컬 연결 네트워크를 형성합니다. 컨벌루션 레이어와 다음 레이어 사이의 연결 수는 원래 n(l) × n(l - 1) 연결에서 n(l) × m 연결로 크게 감소합니다. m은 필터 크기입니다.
가중치 공유: 매개변수인 필터 w(l)는 레이어 l의 모든 뉴런에 대해 동일합니다.
로컬 연결과 가중치 공유로 인해 컨벌루션 레이어의 매개변수는 m차원 가중치 w(l)와 1차원 편향 b(l)만 가지며 총 m1개의 매개변수가 있습니다.
레이어 l의 뉴런 수는 임의로 선택되지 않고 n(l) = n(l−1) − m 1을 만족합니다.
풀링 레이어
집계 계층, 서브샘플링 계층이라고도 합니다.
풀링(Pooling)은 특징 선택(feature Selection)으로 특징 수를 줄여 매개변수 수를 줄이고 특징 크기를 줄이며 높이와 길이 방향의 공간을 줄이는 것입니다.
일반적으로 사용되는 집계 함수
최대값: 일반적으로 한 영역에 있는 모든 뉴런의 최대값을 취합니다.
평균 집계(Mean): 일반적으로 해당 영역의 모든 뉴런의 평균값을 취합니다.
일반적인 풀링 레이어는 각 특징 맵을 2×2 크기의 겹치지 않는 영역으로 나눈 다음 다운샘플링을 위해 최대 풀링을 사용합니다.
풀링 레이어는 특별한 컨벌루션 레이어로 간주될 수도 있습니다.
일부 초기 컨벌루션 네트워크(예: LeNet-5)에서는 풀링 계층에서 비선형 활성화 함수가 때때로 사용되었습니다.
여기서 Y(′d)는 풀링 계층의 출력이고, f(·)는 비선형 활성화 함수이고, w(d)와 b(d)는 학습 가능한 스칼라 가중치 및 편향입니다.
풀링 계층의 특성
학습할 매개변수가 없습니다.
채널 수는 변하지 않습니다
작은 위치 변경에도 견고함(견고함)
매개변수 학습
오차항 계산
CNN의 시각화
레이어 1 가중치 시각화
학습 전 필터는 무작위로 초기화되므로 흑백 음영의 패턴은 없으나, 학습 후 필터는 일반 이미지가 됩니다. 우리는 학습을 통해 필터가 흰색에서 검은색으로 그라데이션되는 필터, 블록 영역(블롭이라고 함)을 포함하는 필터 등과 같은 일반 필터로 업데이트된다는 것을 발견했습니다. 수평 및 수직 가장자리에 반응하는 필터
컨볼루셔널 레이어의 필터가 에지나 패치와 같은 원본 정보를 추출하는 것을 볼 수 있습니다. 방금 구현된 CNN은 이 원시 정보를 후속 레이어에 전달합니다.
계층 구조 기반 정보 추출
CNN의 컨볼루션 레이어에서 추출된 정보입니다. 레이어 1의 뉴런은 가장자리나 패치에 반응하고, 레이어 3은 텍스처에 반응하고, 레이어 5는 객체 부분에 반응하고, 마지막 완전 연결 레이어는 객체 범주(개 또는 자동차)에 반응합니다.
여러 컨볼루셔널 레이어를 쌓으면 레이어가 깊어질수록 추출된 정보가 더욱 복잡해지고 추상화됩니다. 이는 딥러닝에서 매우 흥미로운 부분입니다. 층이 깊어짐에 따라 뉴런은 단순한 모양에서 "상위 수준" 정보로 변경됩니다. 즉, 우리가 사물의 '의미'를 이해하는 것처럼, 반응의 대상도 점차 변해간다.
일반적인 컨벌루션 신경망
르넷-5
LeNet은 1998년에 필기 숫자 인식을 위한 네트워크로 제안되었습니다. 연속적인 Convolutional Layer와 Pooling Layer를 가지고 최종적으로 Fully Connected Layer를 통해 결과를 출력합니다.
입력 레이어를 제외하면 LeNet-5에는 총 7개의 레이어가 있습니다.
입력 레이어: 입력 이미지 크기는 32 × 32 = 1024입니다.
컨벌루션 레이어: 6개의 5×5 필터를 사용하여 28×28 = 784 크기의 특징 맵 6세트를 얻습니다. 따라서 C1 계층의 뉴런 수는 6 × 784 = 4704이고, 훈련 가능한 매개변수 수는 6 × 25 6 = 156이며, 연결 수는 156 × 784 = 122304입니다(편향 포함, 아래 동일).
풀링 계층: 샘플링 창은 2×2이고 평균 풀링이 사용되며 비선형 함수가 사용됩니다. 뉴런 수는 6 × 14 × 14 = 1176개, 훈련 가능한 매개변수 수는 6 × (1 1) = 12개, 연결 수는 6 × 196 × (4 1) = 5,880개입니다.
컨벌루션 레이어. LeNet-5에서는 입력과 출력 특징 맵 간의 종속성을 정의하기 위해 연결 테이블이 사용됩니다. 그림에서 볼 수 있듯이 총 60개의 5×5 필터를 사용하여 10×크기의 특징 맵 그룹 16개를 얻습니다. 10. 뉴런 수는 16 × 100 = 1,600, 훈련 가능한 매개변수 수는 (60 × 25) 16 = 1,516, 연결 수는 100 × 1, 516 = 151,600입니다.
풀링 레이어에서는 샘플링 윈도우가 2×2이고, 5×5 크기의 16개의 특징 맵이 얻어집니다. 훈련 가능한 매개 변수의 수는 16 × 2 = 32이고, 연결 수는 16 × 25 × (4 1)입니다. ) = 2000.
120 × 16 = 1, 920개의 5 × 5 필터를 사용하는 컨벌루션 레이어는 1 × 1 크기의 특징 맵 120개 세트를 얻습니다. C5 계층의 뉴런 수는 120개, 훈련 가능한 매개변수 수는 1, 920 × 25 120 = 48120, 연결 수는 120 × (16 × 25 1) = 48120입니다.
완전 연결 계층에는 84개의 뉴런이 있고 훈련 가능한 매개변수의 수는 84×(120 1) =10164입니다. 연결 수와 훈련 가능한 매개변수 수는 10164로 동일합니다.
출력 레이어: 출력 레이어는 10개의 유클리드 방사형 기초 함수로 구성됩니다.
테이블 조인
컨볼루션 레이어의 입력 및 출력 특징 맵 간의 완전 연결 관계는 필요하지 않으며 비공유 컨볼루션을 사용할 수 있습니다.
입력 및 출력 특성 맵 간의 연결 관계를 설명하기 위해 링크 테이블(Link Table) T를 정의합니다.
p번째 출력 특징 맵이 d번째 입력 특징 맵에 의존하는 경우 Tp,d = 1이고, 그렇지 않으면 0입니다.
알렉스넷
2012년에 제안되었으며 최신 심층 합성곱 네트워크의 다양한 기술 방법을 사용합니다.
GPU를 사용한 병렬 훈련
활성화 함수는 ReLU를 사용합니다.
Dropout을 사용하여 과적합 방지
데이터 확대를 사용하여 모델 정확도 향상
로컬 정규화를 위해 LRN(Local Response Normalization) 레이어 사용
인셉션 네트워크
Inception 모듈: 컨볼루션 레이어에는 다양한 크기의 여러 컨볼루션 작업이 포함되어 있습니다.
Inception 네트워크는 여러 개의 inception 모듈과 소수의 집계 레이어로 구성됩니다.
V1 버전
Inception 네트워크의 초기 v1 버전은 매우 유명한 GoogLeNet[Szegedy et al., 2015]이며 2014 ImageNet 이미지 분류 대회에서 우승했습니다.
잔여 네트워크 ResNet
비선형 컨벌루션 레이어에 직접 에지를 추가하면 정보 전파 효율성이 향상됩니다.
비선형 요소
하나 이상의 컨볼루셔널 레이어일 수 있습니다.
이 비선형 단위 f(x, θ)가 목적 함수 h(x)와 유사하다고 가정합니다.
신경망으로 구성된 비선형 단위는 원래의 목적 함수 또는 잔차 함수를 대략적으로 근사화하는 능력이 충분하지만 실제로는 후자가 학습하기 더 쉽습니다.
결론: 비선형 단위 f(x, θ)가 잔차 함수 h(x)−x를 근사화하고 f(x, θ) x를 사용하여 h(x)를 근사화합니다.
잔여 네트워크는 직렬로 연결된 많은 잔여 단위로 구성된 매우 깊은 네트워크입니다.
기타 컨볼루션 방법
전치 컨벌루션
아트러스 컨볼루션(확장 컨볼루션)
딥러닝
네트워크를 심화하다
더 깊은 네트워크를 향해 나아가다
이 네트워크는 다음 섹션에서 소개할 VGG를 나타냅니다.
3×3 작은 필터를 기반으로 한 컨벌루션 레이어
활성화 함수는 ReLU입니다.
드롭아웃 레이어는 완전 연결 레이어 뒤에 사용됩니다.
Adam 기반 최적화
He의 초기값을 가중치의 초기값으로 사용
인식 정확도는 99.38%
인식 정확도 더욱 향상
앙상블 학습
학습률 감소
데이터 증대
회전, 수직 또는 수평 이동, 자르기, 뒤집기, 밝기 증가 등과 같은 작은 변화를 적용하여 이미지 수를 늘립니다.
더 깊은 동기부여
인식 성능 향상
심화의 중요성은 ILSVRC가 대표하는 대규모 영상인식대회 결과를 보면 알 수 있다. 이번 대회 결과에 따르면 최근 상위권 방식은 대부분 딥러닝을 기반으로 하며, 네트워크의 계층이 점차 심화되는 경향이 있는 것으로 나타났다. 즉, 레이어가 깊어질수록 인식 성능이 높아지는 것을 알 수 있다.
네트워크 매개변수 수를 줄입니다.
네트워크를 심화시키기 위해 작은 필터를 쌓는 것의 장점은 매개변수 수를 줄이고 수용 필드(뉴런에 변화를 가하는 국소 공간 영역)를 확장할 수 있다는 것입니다. 또한 오버레이 레이어를 통해 ReLU와 같은 활성화 기능이 컨볼루션 레이어 중간에 삽입되어 네트워크의 표현력이 더욱 향상됩니다. 비선형 함수의 중첩을 통해 네트워크에 활성화 함수를 기반으로 한 '비선형' 표현성이 추가되기 때문입니다.
학습을 더욱 효율적으로 만들어보세요
심화 레이어가 없는 네트워크에 비해 레이어를 심화시키면 학습 데이터가 줄어들고 효율적으로 학습을 수행할 수 있습니다.
딥러닝 네트워크 구조
ILSVRC 대회
ImageNet에는 다양한 이미지가 포함되어 있으며 각 이미지는 레이블(범주 이름)과 연결되어 있습니다. 이 거대한 데이터세트를 활용한 ILSVRC 이미지 인식 대회가 매년 개최되고 있습니다.
2012년에는 대규모 영상인식대회 ILSVRC가 개최됐다. 그해 대회에서는 딥러닝 기반 방식(통칭 AlexNet)이 압도적인 승리를 거두며 기존의 이미지 인식 방식을 완전히 뒤집었습니다. 이후 대회에서는 딥러닝이 무대를 중심으로 활발히 활동했다.
특히 2015년 ResNet(150개 이상의 레이어로 구성된 딥 네트워크)은 오인식률을 3.5%까지 줄였습니다. 이번 결과는 일반인들의 인식능력조차 뛰어넘는 결과라고 한다.
VGG
VGG는 Convolutional Layer와 Pooling Layer로 구성된 기본 CNN입니다. 그러나 그 특징은 가중치가 적용된 레이어(컨벌루션 레이어 또는 완전 연결 레이어)를 깊이가 있는 16개 레이어(또는 19개 레이어)에 중첩한다는 것입니다(레이어 깊이에 따라 "VGG16" 또는 "VGG19"라고도 함).
구글르넷
네트워크는 수직 방향의 깊이뿐만 아니라 수평 방향의 폭도 가지고 있는데, 이를 인셉션(Inception) 구조라고 합니다.
레스넷
이전 네트워크보다 더 깊은 구조를 가지고 있습니다.
우리는 깊이를 깊게 하는 것이 성능 향상에 중요하다는 것을 이미 알고 있습니다. 하지만 딥러닝에서는 깊이를 너무 깊게 하면 학습이 원활하게 진행되지 않아 최종 성능이 떨어지는 경우가 많습니다. ResNet에서는 이러한 문제를 해결하기 위해 "단축키 구조"("단축키" 또는 "경로"라고도 함)가 도입되었습니다. 이 바로가기 구조를 가져온 후 레이어가 깊어짐에 따라 성능이 지속적으로 향상될 수 있습니다(물론 레이어 심화도 제한됩니다).
실제로는 ImageNet의 방대한 데이터 세트를 사용하여 학습한 가중치 데이터를 유연하게 적용하는 경우가 많습니다. 이를 전이 학습이라고 합니다. 학습된 가중치(부분)를 다른 신경망에 복사하여 재학습(미세 조정)합니다. 예를 들어 VGG와 동일한 구조의 네트워크를 준비하고, 학습된 가중치를 초기값으로 사용하고, 새로운 데이터 세트를 다시 학습할 객체로 사용합니다. 전이 학습은 보유하고 있는 데이터 세트가 작을 때 매우 효과적입니다.
딥러닝 속도 향상
해결해야 할 문제
AlexNet의 순방향 처리에서 각 레이어의 시간 비율: 왼쪽은 GPU를 사용하는 경우이고 오른쪽은 CPU를 사용하는 경우입니다. 그림에서 "conv"는 컨볼루션 레이어에 해당하고, "pool"은 풀링 레이어에 해당하고, "fc"는 완전 연결 레이어에 해당하고, "norm"은 정규화 레이어에 해당합니다.
컨벌루션 레이어의 처리 시간은 전체 GPU의 95%, 전체 CPU의 89%를 차지합니다.
GPU 기반 속도 향상
GPU는 주로 NVIDIA와 AMD 두 회사에서 제공됩니다. 두 GPU 모두 일반적인 수치 계산에 사용할 수 있지만 NVIDIA의 GPU는 딥 러닝에 더 "가깝습니다". 실제로 대부분의 딥 러닝 프레임워크는 NVIDIA GPU에서만 이점을 얻습니다. 딥러닝 프레임워크는 엔비디아가 제공하는 GPU 컴퓨팅을 위한 종합 개발 환경인 CUDA를 사용하기 때문입니다.
분산 학습
여러 GPU 또는 여러 시스템의 분산 컴퓨팅
Google의 TensorFlow와 Microsoft의 CNTK는 개발 과정에서 분산 학습을 매우 중요하게 생각합니다.
가로축은 GPU 개수 세로축은 단일 GPU 대비 속도 향상 비율입니다.
산술 정밀도의 자릿수 감소
수치 정밀도(값을 표현하는 자릿수)와 관련하여 우리는 딥러닝에서 숫자의 수치 정밀도가 필요하지 않다는 것을 이미 알고 있습니다. 이는 신경망의 중요한 속성입니다. 이 속성은 신경망의 견고성을 기반으로 합니다.
앞으로는 반정밀도 부동소수점이 표준으로 사용될 예정이며, 이전 세대 GPU보다 최대 약 2배의 속도를 달성할 것으로 예상된다.
딥러닝 적용 사례
객체 감지
이미지를 통해 물체의 유형과 물체의 위치를 파악합니다.
객체 검출을 위해 CNN을 사용하는 방법 중에는 R-CNN이라는 방법이 있습니다.
이미지 분할
픽셀 수준에서 이미지 분류
FCN은 하나의 순방향 프로세스를 통해 모든 픽셀을 분류합니다.
FCN은 말 그대로 "전체가 컨볼루셔널 레이어로 구성된 네트워크"를 의미합니다. 완전 연결 레이어를 포함하는 일반 CNN과 비교하여 FCN은 완전 연결 레이어를 동일한 역할을 하는 컨벌루션 레이어로 대체합니다.
이미지 캡션 생성
딥러닝을 기반으로 이미지 캡션을 생성하는 대표적인 방법은 NIC라고 합니다.
NIC는 Deep CNN과 자연어를 처리하는 RNN(Recurrent Neural Network)으로 구성됩니다.
딥러닝의 미래
이미지 스타일 변환
이미지 생성
자동 조종 장치
강화 학습
자연어 및 단어의 분산 표현
마티: “이건 무거워요.” 브라운 박사: “미래에는 상황이 그렇게 무거워질까요?” —영화 '백 투 더 퓨쳐'
자연어 처리란 무엇인가
우리의 언어는 단어로 이루어져 있고, 언어의 의미도 단어로 이루어져 있습니다. 즉, 단어는 의미의 가장 작은 단위이다.
컴퓨터가 단어의 의미를 이해하도록 하는 세 가지 방법
동의어 사전 기반 접근 방식
개수 기반 접근 방식
추론 기반 접근 방식(word2vec)
동의어 사전 기반 접근 방식
단어 의미를 수동으로 정의하는 것을 고려하세요.
현재 널리 사용되는 것은 동의어사전이다.
각 단어의 의미에 따른 상하위어 관계를 바탕으로 한 다이어그램
워드넷
가장 유명한 동의어 사전
효과
단어의 동의어 얻기
단어 간의 유사성 계산
NLTK 모듈을 통해 사용됨
문제
새로운 단어가 계속해서 등장해 시대변화에 적응하기 어렵다
높은 인건비
미묘한 차이를 말로 표현하지 못함
개수 기반 접근 방식
신체
코퍼스는 대량의 텍스트 데이터입니다.
자연어 처리 분야에서 사용되는 말뭉치는 때때로 텍스트 데이터에 추가 정보를 추가합니다. 예를 들어, 텍스트 데이터의 각 단어를 품사로 표시할 수 있습니다. 여기서는 우리가 사용하는 말뭉치에 태그가 추가되지 않았다고 가정합니다.
Python 기반 코퍼스 전처리
유명한 말뭉치
위키피디아와 구글 뉴스
전처리
대문자 -> 소문자
텍스트.하단()
구두점 처리
text.replace('.', ' .')
re.split('(\W )', 텍스트)
\W: 단어가 아닌 문자(문자, 숫자 또는 밑줄 제외)와 일치합니다.
: 이전 패턴 "\W"가 한 번 이상 반복됨을 나타냅니다.
단어 ID 및 대응표 만들기
단어 목록을 단어 ID 목록으로 변환
말뭉치 = [word_to_id[w] for w in word]
단어의 분산 표현
단어 영역에서 간결하고 합리적인 벡터 표현 구성
분포 가설
단어의 의미는 그것을 둘러싸고 있는 단어들에 의해 형성된다
문맥은 중심 단어를 둘러싼 단어를 나타냅니다.
컨텍스트의 크기를 창 크기라고 합니다.
창 크기는 1이고 컨텍스트의 왼쪽과 오른쪽에 1개의 단어가 포함됩니다.
동시발생 매트릭스
벡터를 사용하는 가장 간단한 방법은 벡터 주위에 단어가 몇 번 나타나는지 계산하는 것입니다.
text = '당신이 작별인사를 하면 나도 인사합니다.'
창 크기를 1로 설정
벡터 간의 유사성
코사인 유사성
비슷한 단어 정렬
쿼리 단어의 단어 벡터를 가져옵니다.
쿼리 단어의 단어 벡터와 다른 모든 단어 벡터 간의 코사인 유사성을 각각 구합니다.
코사인 유사성을 기반으로 한 결과로 해당 값을 내림차순으로 표시합니다.
개수 기반 방법의 개선
상호정보를 클릭하세요
동시 발생 행렬에서 the와 같은 일반적인 단어는 car와 같은 명사와 강한 상관 관계가 있는 것으로 간주됩니다.
PMI
, P(x)는 x가 발생할 확률을 나타내고, P(y)는 y가 발생할 확률을 나타내며, P(x, y)는 x와 y가 동시에 발생할 확률을 나타냅니다.
동시 발생 매트릭스 기반 PMI
불충분하다
두 단어의 동시 출현 횟수가 0일 때 log(2)(0) = −
긍정적인 점 상호 정보
동시 발생 행렬을 기반으로 PPMI 행렬 가져오기
차원성 감소
데이터의 분포를 관찰하고 중요한 "축"을 찾아야 합니다.
특이값 분해(SVD)
SVD는 모든 행렬을 3개의 행렬의 곱으로 분해합니다.
여기서 U와 V는 열 벡터가 서로 직교하는 직교 행렬이고, S는 대각 요소를 제외한 모든 요소가 0인 대각 행렬입니다.
행렬 U에서 중복 열 벡터를 제거하여 원래 행렬을 근사화할 수 있습니다.
U, S, V = np.linalg.svd(W)
행렬 크기가 N*N인 경우 SVD의 계산 복잡도는 O(N^3)에 도달합니다. 따라서 Truncated SVD와 같은 더 빠른 방법이 자주 사용됩니다. Truncated SVD는 더 작은 특이값을 갖는 부분을 잘라 고속을 달성합니다.
sklearn.utils.extmath에서 import randomized_svd U, S, V = randomized_svd(W, n_comComponents=wordvec_size, n_iter=5, random_state=None)
PTB 데이터 세트
PTB 코퍼스는 제안된 방법을 평가하기 위한 벤치마크로 자주 사용됩니다.
PTB 코퍼스 전처리
희귀 단어를 특수 문자로 바꾸는 대괄호
특정 숫자를 "N"으로 바꾸기
내가 한 전처리
모든 문장을 연결하여 하나의 큰 시계열 데이터로 처리합니다. 이때, 각 문장 끝에 특수문자 <eos>를 삽입합니다.
초매개변수 할당
window_size = 2
wordvec_size = 100
PTB 데이터 세트를 기반으로 한 평가
검색어 you의 경우 i, we 등의 인칭대명사가 문법상 동일한 용법을 가진 단어들임을 알 수 있습니다.
검색어 연도에는 월, 분기 등의 동의어가 있습니다.
검색어 car에는 auto 및 vehicle과 같은 동의어가 있습니다.
도요타를 검색어로 사용하면 자동차 제조사명이나 닛산, 혼다, 렉서스 등의 브랜드명이 등장했다.
요약하다
코퍼스를 사용하여 문맥의 단어 수를 계산하고 이를 PPMI 행렬로 변환한 다음 SVD 차원 감소를 기반으로 좋은 단어 벡터를 얻습니다.
word2vec
“판단할 근거가 없다면 추론하지 마세요.” ——아서 코난 도일, "보헤미아 스캔들"
단어 삽입
Word2Vec은 "단어 임베딩"을 생성하는 알고리즘입니다.
Word2Vec 외에도 GloVe(Global Vector for Word Representation), FastText 등과 같은 단어 임베딩을 생성하는 다른 방법이 있습니다. 이러한 방법은 다양한 전략과 알고리즘을 사용할 수 있지만 모두 벡터 공간에서 단어의 의미 정보를 효과적으로 캡처하는 것을 목표로 합니다.
추론 기반 방법 및 신경망
개수 기반 방법의 문제점
현실 세계에서 말뭉치는 매우 많은 수의 단어를 처리합니다. 예를 들어, 영어 어휘에는 100만 개가 넘는 단어가 있다고 합니다. 어휘 크기가 100만 개를 초과하는 경우 개수 기반 방법을 사용하려면 100만 × 100만 개의 거대한 행렬을 생성해야 하지만 이러한 큰 행렬에 대해 SVD를 수행하는 것은 분명히 비현실적입니다.
신경망을 사용한 추론 기반 접근 방식
미니배치 데이터 학습. 즉, 데이터의 일부를 사용하여 가중치를 학습하고 반복적으로 업데이트하는 것입니다.
신경망 학습은 여러 머신과 GPU를 사용하여 병렬로 수행될 수 있으므로 전체 학습 프로세스가 가속화됩니다.
추론 기반 방법 요약
표적
클로즈처럼 주변 단어(컨텍스트)가 주어졌을 때 중간에 어떤 단어가 올지 예측하세요.
추론 방법
문맥을 입력하면 모델은 각 단어의 발생 확률을 출력합니다.
모델 학습의 결과로 우리는 단어의 분산 표현을 얻게 됩니다.
신경망에서 단어를 처리하는 방법
단어를 벡터로 변환
신경망은 you 또는 say와 같은 단어를 직접 처리할 수 없습니다. 신경망을 사용하여 단어를 처리하려면 먼저 단어를 고정 길이 벡터로 변환해야 합니다.
변환 방법
원-핫 벡터
한 요소만 1이고 나머지 요소는 0입니다.
신경망
입력 레이어
완전 연결 레이어
초기 가중치는 무작위입니다.
간단한 word2vec
CBOW 모델의 추론
구조
특징
두 개의 입력 레이어가 있습니다
입력 레이어에서 중간 레이어로의 변환은 동일한 완전 연결 레이어(가중치 W(in))에 의해 완료됩니다.
중간 계층에서 출력 계층 뉴런으로의 변환은 다른 완전 연결 계층(가중치 W(out))에 의해 완료됩니다.
중간 레이어의 뉴런은 완전 연결 레이어에 의해 변환된 후 각 입력 레이어에서 얻은 값의 "평균"입니다.
출력 레이어의 뉴런은 각 단어의 점수이며, 그 값이 높을수록 값이 클수록 해당 단어의 출현 확률이 높아집니다.
CBOW 모델 학습
Softmax 함수를 사용하여 점수를 확률로 변환
이러한 확률과 지도 라벨 간의 교차 엔트로피 오류를 찾습니다.
손해로 배워라
word2vec의 가중치 및 분산 표현
W(in) 가중치는 우리가 원하는 단어의 분포 표현입니다.
연구 데이터 준비
문맥과 목표 단어
원-핫 표현으로 변환
CBOW 모델 구현
추가 정보
CBOW 모델과 확률
wt−1 및 wt 1이 발생한 후에 wt가 발생할 확률입니다.
CBOW 모델의 손실 함수 L(음의 로그 우도)
스킵그램 모델
word2vec에는 두 가지 모델이 있습니다
CBOW
스킵그램
스킵그램(Skip-gram)은 CBOW 모델에서 처리한 문맥과 타겟 단어를 반전시키는 모델이다.
스킵그램 네트워크 구조 다이어그램
스킵그램 모델과 확률
스킵그램 모델은 입력 레이어가 하나만 있고, 출력 레이어의 개수는 문맥에 있는 단어의 개수와 같습니다. 먼저, 각 출력 레이어의 손실을 별도로 계산한 다음 최종 손실로 합산해야 합니다.
중간 단어(타겟 단어) wt를 기준으로 문맥 wt−1과 wt 1을 예측합니다.
스킵그램 모델의 손실함수는 다음과 같이 표현될 수 있다.
손실 함수 비교
스킵그램 모델의 예측 개수는 문맥 단어 수만큼 많기 때문에 손실 함수에는 각 문맥 단어에 해당하는 손실의 합이 필요합니다. CBOW 모델에서는 목표 단어의 손실만 필요합니다.
단어 분산 표현의 정확성으로 판단할 때, Skip-grm 모델은 대부분의 경우 더 나은 결과를 제공합니다.
계산 기반과 추론 기반
새로운 단어를 어휘에 추가해야 하는 시나리오와 업데이트된 단어의 분산 표현
개수 기반 방법에는 처음부터 계산이 필요합니다.
추론 기반 방법을 사용하면 매개변수를 점진적으로 학습할 수 있습니다.
단어의 분산 표현의 속성
개수 기반 방법은 주로 단어의 유사성을 인코딩합니다.
추론 기반 방법은 단어 사이의 복잡한 패턴을 이해할 수 있습니다.
킹맨우먼 = 퀸
단어의 분산 표현의 정확성
추론 기반 방법과 계산 기반 방법은 구별할 수 없습니다.
word2vec 속도 향상
모든 것을 알려고 하지 마십시오. 그렇지 않으면 아무것도 알지 못할 것입니다. ——데모크리토스(고대 그리스 철학자)
개선하다
공부하다
다른
word2vec의 응용
word2vec을 사용하여 얻은 단어의 분산 표현을 사용하여 대략적인 단어를 찾을 수 있습니다.
전이 학습
한 분야에서 배운 지식을 다른 분야에 적용할 수 있음
자연어 처리 작업을 해결할 때 word2vec은 일반적으로 처음부터 단어의 분산 표현을 학습하는 데 사용되지 않으며 대신 대규모 코퍼스(위키피디아, Google 뉴스 등의 텍스트 데이터)에서 먼저 학습한 다음 학습된 분산 표현은 단일 작업에 적용됩니다.
텍스트 분류, 텍스트 클러스터링, 품사 태깅, 감정 분석과 같은 자연어 처리 작업에서 단어 벡터화의 첫 번째 단계는 학습된 단어의 분산 표현을 사용할 수 있습니다.
단어의 분산 표현은 거의 모든 유형의 자연어 처리 작업에서 훌륭하게 작동합니다!
단어의 분산 표현을 사용하면 문서(단어 시퀀스)를 고정 길이 벡터로 변환하는 것도 가능합니다.
자연어를 벡터로 변환할 수 있다면 다양한 머신러닝 방법을 사용할 수 있습니다
단어 벡터를 평가하는 방법
인위적으로 생성된 단어 유사성 평가 세트를 평가합니다.
고양이와 동물의 유사도는 8, 고양이와 자동차의 유사도는 2... 이와 유사하게 단어 간의 유사도는 0에서 10까지의 점수로 수동으로 점수를 매깁니다.
사람들이 부여한 점수와 word2vec이 부여한 코사인 유사도를 비교하여 이들 사이의 상관성을 조사합니다.
결론적으로
모델마다 정확도가 다릅니다(코퍼스를 기준으로 가장 적합한 모델 선택).
말뭉치가 클수록 결과가 좋아집니다. (빅데이터는 항상 필요합니다.)
단어 벡터의 차원은 적당해야 합니다(너무 크면 정확도가 떨어짐).
RNN
어둡고 습한 곳에서 야옹거리며 울던 기억이 납니다. ——나츠메 소세키의 『나는 고양이다』
확률 및 언어 모델
단순한 피드포워드 신경망은 시계열 데이터의 속성을 완전히 학습할 수 없습니다. 그 결과 RNN(Recurrent Neural Network)이 탄생하게 되었습니다.
확률론적 관점에서 본 word2vec
CBOW 모델의 원래 목적인 "문맥에서 타겟 단어를 예측"하는 것이 무엇인가에 사용될 수 있습니까? P(wt|wt−2, wt−1)가 일부 실제 시나리오에서 역할을 할 수 있습니까?
이전에 고려한 창은 모두 대칭이며 왼쪽 창만 고려합니다.
언어 모델
확률을 사용하여 일련의 단어가 발생할 가능성, 즉 단어 순서가 자연스러운 정도를 평가합니다.
확률 표현
여기서 P(A,B) = P(A|B)*P(B) = P(B|A)*P(A)
CBOW 모델을 언어 모델로 사용
마르코프 체인
어떤 사건의 확률이 그 이전의 N개 사건에만 의존하는 경우 이를 "N차 마르코프 체인"이라고 합니다.
컨텍스트를 왼쪽의 2개 단어로 제한하는 것은 2차 마르코프 체인입니다.
불충분하다
창이 너무 짧으면 컨텍스트를 결합할 수 없습니다.
창이 너무 길면 문맥의 단어 순서가 무시됩니다.
CBOW는 Continuous Bag-Of-Words의 약자입니다. Bag-Of-Words는 "단어 가방"을 의미하며 가방에 있는 단어의 순서가 무시된다는 의미입니다.
RNN에는 컨텍스트의 길이에 관계없이 컨텍스트 정보를 기억할 수 있는 메커니즘이 있습니다. 따라서 RNN을 사용하면 임의 길이의 시계열 데이터를 처리할 수 있습니다.
word2vec은 단어의 분산 표현을 얻는 것을 목표로 하는 방법으로, 일반적으로 언어 모델에서는 사용되지 않습니다.
RNN
순환 신경망
RNN 레이어의 구조
시간 t에서의 입력은 xt이며, 이는 시계열 데이터(x0, x1, ···, xt,···)가 레이어에 입력된다는 것을 의미합니다. 그러면 입력에 해당하는 형태로 출력(h0, h1, ··· , ht, ···)
출력에는 두 개의 포크가 있습니다. 이는 동일한 내용이 복사되었음을 의미합니다. 출력의 분기는 자체 입력이 됩니다.
루프 풀기
시계열 데이터의 인덱스(즉, 시간 t의 입력 데이터가 xt임)를 지칭하기 위해 "순간"이라는 단어를 사용합니다. "t번째 단어", "t번째 RNN 레이어" 등의 표현이 사용되는 것은 물론, "시간 t의 단어", "시간 t의 RNN 레이어" 등의 표현도 사용됩니다.
매 순간 RNN 레이어는 두 개의 값을 수신하는데, 이는 이 레이어로 전달된 입력과 이전 RNN 레이어의 출력입니다.
RNN에는 입력 x를 출력 h로 변환하는 가중치 Wx와 이전 RNN 레이어의 출력을 현재 출력으로 변환하는 가중치 Wh라는 두 가지 가중치가 있습니다. 또한 편견이 있습니다. b.
다른 관점에서 보면 RNN은 위의 공식을 통해 지속적으로 업데이트되는 상태 h를 갖습니다. 따라서 h는 은닉 상태 또는 은닉 상태 벡터라고 부를 수 있습니다.
두 가지 개략도 그리기 방법은 동일합니다.
시간에 따른 역전파
시간 기반 역전파
BPTT를 기반으로 그래디언트를 찾으려면 매 순간 RNN 레이어의 중간 데이터가 메모리에 저장되어야 합니다. 따라서 시계열 데이터가 길어질수록 컴퓨터의 메모리 사용량(계산뿐만 아니라)도 늘어납니다.
잘린 BPTT
위의 문제를 해결하기 위해 긴 시계열 데이터를 처리할 때 네트워크 연결을 적절한 길이로 자르는 것이 일반적인 관행입니다.
시간축 방향으로 너무 긴 네트워크는 적절한 위치에서 잘라서 여러 개의 작은 네트워크를 만든 다음, 잘라낸 작은 네트워크에 대해 오류 역전파 방법을 수행하는 방법을 Truncated BPTT(truncated BPTT)라고 합니다.
Truncated BPTT에서는 네트워크의 역방향 전파 연결이 끊어지지만 순방향 전파 연결은 계속 유지됩니다.
처리순서
가장 먼저 해야 할 일은 블록 1(x0, ..., x9)의 입력 데이터를 RNN 레이어에 공급하는 것입니다.
먼저 순전파를 수행한 다음 역전파를 수행하여 원하는 그래디언트를 얻습니다.
다음으로, 다음 블록(x10, x11, ···, x19)의 입력 데이터가 RNN 레이어에 공급됩니다. 이 순방향 전파 계산에는 순방향 전파 연결이 유지될 수 있도록 이전 블록의 마지막 숨겨진 상태 h9가 필요합니다.
Truncated BPTT의 미니배치 학습
입력 데이터 시작 부분에서는 개별 배치 내에서 "오프셋"을 만들어야 합니다.
알아채다
데이터를 순서대로 입력하려면
입력 데이터의 각 배치(각 샘플)의 시작 위치를 이동하려면
RNN 구현
Truncated BPTT 기반 학습을 고려하면 대상 신경망은 길이 T(T는 임의의 값)의 시계열 데이터를 수신하고 이러한 T 상태는 레이어로 간주될 수 있습니다.
한 번에 T개의 단계를 처리하는 레이어를 "Time RNN 레이어"라고 부릅니다.
Time RNN 레이어에서 단일 단계 처리를 수행하는 레이어를 "RNN 레이어"라고 합니다.
Time RNN과 마찬가지로 시계열 데이터를 전체적으로 처리하는 레이어의 이름은 이 책에서 제시하는 명명 규칙인 "Time"이라는 단어로 시작합니다. 그 후에는 Time Affine 레이어, Time Embedding 레이어 등도 구현하겠습니다.
RNN 레이어 구현
순방향 전파
역전파
Time RNN 레이어 구현
순방향 전파
Time RNN 레이어는 히든 상태 h를 멤버 변수에 저장하여 블록 간 히든 상태를 상속합니다.
숨겨진 상태 h가 호출되는지 여부를 기록하려면 stateful 매개변수를 사용하세요. 역전파에서 Stateful이 False인 경우 첫 번째 RNN 레이어의 숨겨진 상태는 제로 행렬입니다.
역전파
이전 순간에 Hidden State로 흐르는 Gradient를 멤버 변수 dh에 저장합니다. 7장에서 seq2seq(sequence-to-sequence)를 논의할 때 사용할 것이기 때문입니다.
시계열 데이터 처리를 위한 레이어 구현
RNNLM의 전체 그림
RNN 기반 언어 모델을 RNNLM이라고 합니다.
구조
레이어 1은 단어 ID를 단어의 분산 표현(단어 벡터)으로 변환하는 임베딩 레이어입니다. 이 단어 벡터는 RNN 레이어에 입력됩니다.
RNN 레이어는 다음 레이어(위)에 은닉 상태를 출력하고, 다음 RNN 레이어(오른쪽)에도 히든 상태를 출력합니다.
RNN 레이어에서 위쪽으로 출력된 Hidden State는 Affine 레이어를 거쳐 Softmax 레이어로 전달됩니다.
견본
너는 작별 인사를 하고 나도 인사해
첫 번째 단어인 단어 ID가 0인 you가 입력됩니다. 이때 소프트맥스 레이어에서 출력된 확률분포를 보면 say의 확률이 가장 높은 것을 알 수 있는데, 이는 다음에 나오는 단어가 say로 정확하게 예측되었음을 의미한다.
2절은 말합니다. 이때 Softmax 레이어의 출력은 안녕과 안녕의 확률이 더 높습니다. RNN 레이어는 "you say"의 과거 정보를 짧은 히든 상태 벡터로 저장하기 때문입니다. RNN 레이어의 임무는 이 정보를 위의 Affine 레이어와 다음 순간에 RNN 레이어에 전달하는 것입니다.
시간 레이어 구현
대상 신경망 구조
시간 관계
Time Affine 레이어는 단순히 T Affine 레이어를 사용하는 것이 아니라 행렬 연산을 사용하여 효율적인 전체 처리를 달성합니다.
시간 소프트맥스
손실 오류는 Softmax에서 구현됩니다. 교차 엔트로피 오류 계층은 교차 엔트로피 오류를 계산합니다.
T Softmax with Loss 레이어는 각각 손실을 계산한 후 이를 더해 평균을 내고 그 결과 값이 최종 손실로 사용됩니다.
RNNLM 학습 및 평가
RNNLM 구현
언어 모델 평가
입력 데이터는 1입니다.
Perplexity는 언어 모델의 예측 성능을 평가하는 지표로 자주 사용됩니다. 당혹감=1/확률
입력 데이터가 여러 개입니다.
여기서는 데이터의 양을 N이라고 가정한다. tn은 원-핫 벡터 형태의 올바른 솔루션 레이블이고, tnk는 n번째 데이터의 k번째 값을 나타내고, ynk는 확률 분포(신경망에서 Softmax의 출력)를 나타냅니다. 그런데 L은 신경망의 손실이다.
확률이 클수록 좋고, 혼란이 적을수록 좋습니다.
Perplexity는 다음에 선택할 수 있는 옵션의 수를 나타냅니다. 혼동도가 1.25라면 다음 단어의 후보가 1명 정도라는 뜻이다.
RNNLM 학습
RNNLM의 트레이너 클래스
위 작업을 클래스로 캡슐화합니다.
그래프 구조로 확장
순환 신경망
세 개의 숨겨진 레이어 h1, h2, h3이 있습니다. 여기서 h1은 두 개의 입력 x1과 x2에서 계산되고, h2는 두 개의 다른 입력 레이어 x3과 x4에서 계산되며, h3은 두 개의 숨겨진 레이어 h1과 h2에서 계산됩니다.
그래프 네트워크
게이트 RNN
짐을 벗고 가볍게 여행하세요. ——니체
RNN이라고 하면 이전 장의 RNN보다 LSTM 계층을 더 많이 참조합니다. 이전 장의 RNN을 명시적으로 참조해야 하는 경우 "단순 RNN" 또는 "Elman"이라고 말합니다.
간단한 RNN의 문제점
학습 과정에서 RNN 레이어는 "의미 있는 변화도"를 과거에 전달하여 시간 방향의 종속성을 학습합니다. 그러나 학습의 기울기는 제어하기 어렵기 때문에 기울기가 사라지거나 기울기 폭발이 발생할 수 있습니다.
이유
활성화 기능
탄
그래프에서 볼 수 있듯이 그 값은 1.0보다 작고, x가 0에서 멀어질수록 그 값은 작아집니다. 이는 역전파된 그래디언트가 tanh 노드를 통과함에 따라 그 값이 점점 작아진다는 것을 의미합니다. 따라서 tanh 함수를 T번 전달하면 기울기도 T번 감소합니다.
ReLU
그라데이션이 저하되지 않음
MatMul(매트릭스 제품) 노드
그라데이션 폭발
그림과 같이 시간 단계에 따라 그래디언트의 크기는 기하급수적으로 증가하는데, 그래디언트 폭발이 발생하면 결국 오버플로가 발생하고 NaN(숫자가 아닌 값)과 같은 값이 발생하게 됩니다. 결과적으로 신경망 학습이 올바르게 작동하지 않습니다.
그라데이션이 사라집니다
그림에서 볼 수 있듯이, 기울기의 크기는 시간 단계에 따라 기하급수적으로 감소합니다. 기울기가 사라지면 기울기는 빠르게 작아집니다. 기울기가 작아지면 가중치 기울기를 업데이트할 수 없으며 모델은 장기적인 종속성을 학습할 수 없습니다.
변경 이유
행렬 Wh는 T번 반복적으로 곱해진다. Wh가 스칼라인 경우 문제는 간단합니다. Wh가 1보다 크면 기울기가 기하급수적으로 증가하고, Wh가 1보다 작으면 기울기가 기하급수적으로 감소합니다.
Wh가 행렬인 경우. 이때 행렬의 특이값이 지표가 됩니다. 간단히 말해서, 행렬의 특이값은 데이터의 분산 정도를 나타냅니다. 이 특이값(보다 정확하게는 여러 특이값의 최대값)이 1보다 큰지 여부에 따라 기울기 크기의 변화를 예측할 수 있습니다.
폭발하는 경사에 대한 대책
그래디언트 클리핑(Gradient Clipping)이라는 그래디언트 폭발을 해결하는 확립된 방법이 있습니다.
여기서는 신경망에서 사용하는 모든 매개변수의 기울기가 변수로 통합되어 기호 g로 표시될 수 있다고 가정합니다. 그런 다음 임계값을 임계값으로 설정합니다. 이때, 기울기의 L2 norm g가 임계값보다 크거나 같으면 전술한 바와 같이 기울기를 보정한다.
Vanishing Gradient와 LSTM
RNN 학습에서는 그래디언트 소멸도 큰 문제입니다. 이 문제를 해결하려면 RNN 레이어의 구조를 근본적으로 바꿔야 합니다. 여기서 이번 장의 주제인 Gated RNN이 등장하려고 합니다. 많은 Gated RNN 프레임워크(네트워크 구조)가 제안되었으며, 그 중 LSTM과 GRU가 대표적인 것입니다.
LSTM 인터페이스
LSTM은 Long Short-Term Memory의 약자로 단기기억(Short-Term Memory)을 오랫동안 유지할 수 있다는 뜻입니다.
먼저 tanh(h(t−1)*Wh xt*Wx b)의 계산을 직사각형 노드 tanh(ht−1 및 xt는 행 벡터임)로 표현합니다.
LSTM과 RNN의 인터페이스(입력과 출력)를 비교해 보겠습니다.
LSTM과 RNN의 인터페이스 차이점은 LSTM에도 경로 c가 있다는 점입니다. 이 c를 메모리 유닛(혹은 간단히 "유닛")이라고 부르는데, 이는 LSTM의 전용 메모리 부서와 동일합니다.
메모리 유닛의 특징은 LSTM 계층 내에서만 데이터를 주고받는다는 점이다. 즉, LSTM의 출력을 받는 쪽에서는 LSTM의 출력이 은닉 상태 벡터 h만을 갖게 된다. 메모리 유닛 c는 외부 세계에 보이지 않으며, 그 존재를 고려할 필요조차 없습니다.
LSTM 레이어의 구조
ct는 t 시점에 LSTM의 메모리를 저장하는데, 이는 과거부터 t 시점까지 필요한 모든 정보를 담고 있다고 볼 수 있다. 그러면 이 캐리어 메모리의 ct에 기초하여 숨겨진 상태 ht가 출력됩니다.
계산하다
현재 메모리 단위 ct는 "어떤 종류의 계산"(나중에 설명)을 통해 세 개의 입력 c(t−1) h(t−1) 및 xt를 기반으로 계산됩니다.
숨겨진 상태 ht는 업데이트된 ct를 사용하여 계산되며 공식은 ht = tanh(ct)입니다.
문
문의 개폐 정도도 데이터를 통해 자동으로 학습됩니다. 개폐 정도는 0.0~1.0(1.0은 완전히 열린 상태)의 실수로 표시됩니다.
출력 게이트
은닉 상태 ht는 메모리 유닛 ct에만 tanh 함수를 적용하고, tanh(ct)에는 게이트 적용을 고려합니다. 이 게이트는 다음 은닉 상태 ht의 출력을 관리하므로 출력 게이트라고 부른다.
출력 게이트는 다음과 같이 계산됩니다. 시그모이드 함수는 σ()로 표현됩니다.
ht는 o와 tanh(ct)의 곱으로 계산할 수 있으며, 계산 방법은 해당 요소의 곱인 요소별 곱(Hadamard product)이라고도 합니다.
망각의 문
이제 메모리 단위 c(t-1)에 불필요한 메모리를 잊기 위한 게이트를 추가합니다. 여기서는 잊어버리기 게이트라고 합니다.
망각 게이트의 계산은 다음과 같습니다
ct는 이 f와 이전 메모리 단위 ct−1의 해당 요소를 곱하여 얻습니다.
새로운 메모리 유닛
이제 우리는 기억해야 할 이 메모리 단위에 몇 가지 새로운 정보를 추가하고 싶습니다. 이를 위해 새로운 tanh 노드를 추가합니다.
tanh 노드를 기반으로 계산된 결과는 이전 순간의 메모리 유닛 ct−1에 추가됩니다.
이 tanh 노드의 역할은 게이트하는 것이 아니라 메모리 장치에 새로운 정보를 추가하는 것입니다. 따라서 활성화 함수로 시그모이드 함수를 사용하지 않고, tanh 함수를 사용합니다.
입력 게이트
그림 6-17에서 g에 게이트를 추가합니다. 여기서는 새로 추가된 게이트를 입력 게이트라고 합니다.
입력 게이트는 새로운 정보 g의 각 요소 값을 결정합니다. 입력 게이트는 고려 없이 새로운 정보를 추가하는 것이 아니라 어떤 정보를 추가할지 선택합니다. 즉, 입력 게이트는 가중치가 부여된 새로운 정보를 추가합니다.
입력 게이트는 다음과 같이 계산됩니다.
LSTM 경사 흐름
메모리 셀의 역전파는 " " 및 "×" 노드를 통해서만 흐릅니다. " "노드는 상류측에서 그래디언트가 그대로 흘러나오기 때문에 그래디언트가 변하지(축퇴) 않습니다. "×" 노드의 계산은 행렬 곱이 아니라 해당 요소의 곱(하다마 곱)이므로 기울기 변화가 발생하지 않습니다.
LSTM 구현
x*Wx h*Wh b와 같은 아핀 변화의 경우 하나의 공식으로 통합할 수 있습니다.
행렬 라이브러리는 일반적으로 "대형 행렬"을 계산할 때 더 빠르며, 가중치를 함께 관리하면 소스 코드가 더 깔끔해집니다.
LSTM을 사용한 언어 모델
여기서 구현한 언어 모델은 이전 장과 거의 동일하지만, 이전 장에서는 Time RNN 레이어를 사용했지만 이번에는 Time LSTM 레이어를 사용한다는 점만 다릅니다.
RNNLM의 추가 개선
LSTM 레이어의 다층화
LSTM 계층을 심화하는 것(여러 LSTM 계층을 쌓는 것)이 종종 잘 작동합니다.
몇 개의 레이어가 적합합니까?
레이어의 개수는 하이퍼파라미터이므로 해결하려는 문제의 복잡성과 제공할 수 있는 학습 데이터의 크기에 따라 결정해야 합니다.
PTB 데이터 세트에서 언어 모델을 학습하는 경우 LSTM 레이어 수가 2~4개일 때 더 좋은 결과를 얻을 수 있습니다.
Google 번역에 사용되는 GNMT 모델은 LSTM의 8개 레이어로 구성된 네트워크에 중첩됩니다.
Dropout을 기반으로 과적합 억제
깊이를 깊게 하면 표현력이 더 뛰어난 모델을 만들 수 있지만 이러한 모델은 종종 과적합으로 인해 어려움을 겪습니다. 설상가상으로 RNN은 기존 피드포워드 신경망보다 과적합에 더 취약하므로 RNN에 대한 과적합 대책이 매우 중요합니다.
대책
훈련 데이터 추가
모델 복잡성 감소
정규화
탈락
탈락
드롭아웃은 뉴런의 하위 집합을 무작위로 선택한 다음 이를 무시하고 앞으로 신호 전송을 중지합니다.
드롭아웃 레이어 삽입 위치
정규 탈락
오류 구조
시계열 방향으로 Dropout을 삽입하면 모델이 학습하면서 시간이 지남에 따라 정보가 점차 손실됩니다.
올바른 구조
드롭아웃 레이어를 수직으로 삽입
변형 드롭아웃
동일한 레이어의 드롭아웃 간에 마스크를 공유하면 마스크가 "고정"됩니다. 이런 식으로 정보가 손실되는 방식도 "고정"되므로 일반적인 Dropout에서 발생하는 기하급수적인 정보 손실을 피할 수 있습니다.
체중분배
무게 묶음은 말 그대로 "무게 묶기"로 번역될 수 있습니다.
Embedding 레이어와 Affine 레이어의 가중치를 바인딩(공유)하는 방법은 가중치 공유입니다. 이 두 레이어 간에 가중치를 공유하면 학습되는 매개변수의 수가 크게 줄어들 수 있습니다. 게다가 정확도도 향상됩니다.
더 나은 RNNLM 구현
프론티어 연구
RNN을 기반으로 텍스트 생성
완벽한 절망이 없듯이 완벽한 글도 없습니다. ——무라카미 하루키 "바람의 노래를 들어보세요"
언어 모델을 사용하여 텍스트 생성
다음 새 단어를 생성하는 방법
확률이 가장 높은 단어를 선택하면 결과가 고유하게 결정됩니다.
확률이 높은 단어는 선택하기 쉽고, 확률이 낮은 단어는 선택하기 어렵습니다.
텍스트 생성 구현
더 나은 텍스트 생성
더 나은 언어 모델 사용
seq2seq 모델
Seq2Seq(시퀀스 대 시퀀스, 시퀀스 대 시퀀스 모델)
시계열 데이터를 다른 시계열 데이터로 변환하는 모델
seq2seq의 원리
이 모델에는 인코더와 디코더라는 두 가지 모듈이 있습니다. 인코더는 입력 데이터를 인코딩하고 디코더는 인코딩된 데이터를 디코딩합니다.
seq2seq는 두 개의 LSTM 레이어인 인코더 LSTM과 디코더 LSTM으로 구성됩니다.
LSTM의 은닉 상태 h는 고정 길이 벡터입니다. 이전 섹션의 모델과 차이점은 LSTM 레이어가 벡터 h를 수신한다는 것입니다. 이 하나의 작은 변화를 통해 일반 언어 모델이 번역을 처리할 수 있는 디코더로 발전할 수 있었습니다.
시계열 데이터 변환에 대한 간단한 시도
덧셈 계산을 수행하기 위해 seq2seq를 얻으려고 합니다.
가변 길이 시계열 데이터
충전재
원본 데이터를 유효하지 않은(의미 없는) 데이터로 채웁니다. 그리고 데이터 길이를 정렬하십시오.
패딩을 사용할 때 seq2seq에 패딩 관련 처리를 추가해야 합니다.
디코더에 패딩이 입력되면 손실이 계산되지 않아야 합니다. (이 문제는 레이어에 손실 마스크 기능이 있는 Softmax를 추가하여 해결할 수 있습니다.)
인코더에서 패딩을 입력할 때 LSTM 레이어는 이전 순간의 입력을 있는 그대로 출력해야 합니다.
추가 데이터 세트
seq2seq 구현
seq2seq 개선
역방향 입력 데이터
대부분의 경우 이 기술을 사용한 후 학습이 더 빠르게 진행되고 최종 정확도가 향상됩니다.
직관적으로 데이터를 반전시킨 후 경사 전파가 더 부드럽고 더 효과적일 수 있습니다.
엿보는
헬멧을 사용한 인코더를 Peeky Decoder라고 하고, Peeky Decoder를 사용한 seq2seq를 Peeky seq2seq라고 합니다.
인코더는 입력 문장을 디코더에 필요한 모든 정보를 집중시키는 고정 길이 벡터 h로 변환합니다. 이는 디코더에 대한 유일한 정보 소스입니다.
중요한 정보가 집중된 인코더의 출력 h는 디코더의 다른 레이어에 할당될 수 있습니다.
LSTM 레이어와 Affine 레이어에는 두 개의 벡터가 동시에 입력되는데, 이는 실제로 두 벡터의 결합을 나타냅니다.
seq2seq의 적용
기계 번역: "한 언어의 텍스트"를 "다른 언어의 텍스트"로 변환합니다.
자동 요약: "긴 텍스트"를 "간략한 요약"으로 변환합니다.
질문과 답변 시스템: "질문"을 "답변"으로 변환
이메일 자동 회신: "받은 이메일 내용"을 "답장 내용"으로 변환
챗봇
알고리즘 학습
자동 이미지 설명
주목
관심이 전부입니다. ——바스와니의 논문 제목
어텐션(Attention)은 의심할 여지없이 최근 딥러닝 분야에서 가장 중요한 기술 중 하나입니다. 이 장의 목표는 Attention의 구조를 코드 수준에서 이해하고 이를 실제 문제에 적용하여 놀라운 효과를 경험하는 것입니다.
주의 구조
seq2seq 관련 문제
시계열 데이터를 인코딩하기 위해 seq2seq에서 인코더가 사용되며, 인코딩된 정보는 디코더로 전달됩니다. 이 시점에서 인코더의 출력은 고정 길이 벡터입니다.
고정 길이 벡터는 입력 문의 길이에 관계없이(얼마나 길든) 동일한 길이의 벡터로 변환된다는 의미입니다.
인코더 개선
인코더의 출력 길이는 입력 텍스트의 길이에 따라 적절하게 변경되어야 합니다.
인코더는 왼쪽에서 오른쪽으로 처리하기 때문에 엄밀히 말하면 "cat" 벡터에는 "我的人", "は" 및 "猫" 세 단어의 정보만 포함됩니다. 전체적인 밸런스를 고려하면 '고양이'라는 단어 주변의 정보를 골고루 포함하는 것이 가장 좋습니다. 이 경우 양방향 시계열 데이터를 처리하는 양방향 RNN(또는 양방향 LSTM)이 더 효과적입니다.
디코더 개선
이전에는 인코더 LSTM 계층의 "마지막" 숨겨진 상태를 디코더 LSTM 계층의 "초기" 숨겨진 상태에 넣었습니다.
이전 장의 디코더는 인코더 LSTM 계층의 마지막 숨겨진 상태만 사용했습니다. hs를 사용하는 경우 마지막 행만 추출되어 디코더에 전달됩니다. 다음으로 우리는 모든 hs를 사용할 수 있도록 디코더를 개선합니다.
우리는 특정 단어(또는 단어 집합)에 초점을 맞추고 언제든지 이 단어를 변환합니다. 이를 통해 seq2seq는 "입력과 출력의 어떤 단어가 어떤 단어와 관련되어 있는지" 사이의 대응 관계를 학습할 수 있습니다.
예
내 세대 [わがはい] = 나
猫[ねし] = 고양이
많은 연구에서는 "cat =cat"과 같은 단어 대응에 대한 지식을 활용합니다. 단어(또는 구) 사이의 대응을 나타내는 이러한 정보를 정렬이라고 합니다. 지금까지는 정렬이 주로 수동으로 이루어졌는데, 앞으로 소개할 Attention 기술은 정렬 아이디어를 seq2seq에 자동으로 성공적으로 도입했습니다. 이는 '수동조작'에서 '기계자동화'로의 진화이기도 하다.
구조적 변화
계산 방법
"선택" 연산을 미분 가능한 연산으로 대체할 수 있나요? "단일 선택"보다는 "전체 선택"이 더 좋습니다. 각 단어의 중요도(기여도)를 나타내는 가중치를 별도로 계산합니다.
a 확률 분포와 마찬가지로 각 요소는 0.0에서 1.0까지의 스칼라이며 합은 1입니다. 그리고 각 단어의 중요도를 나타내는 가중치와 단어 벡터 hs의 가중합을 계산하여 목표 벡터를 구한다.
시퀀스 데이터를 처리할 때 네트워크는 입력의 중요한 부분에 더 주의를 기울이고 중요하지 않은 부분은 무시해야 합니다. 이는 서로 다른 부분의 가중치를 학습하여 입력 시퀀스의 중요한 부분에 명시적으로 가중치를 부여하므로 모델이 더 좋아질 수 있습니다. 출력 관련 정보에 세심한 주의를 기울이십시오. Attention 메커니즘의 핵심은 입력 시퀀스의 각 위치에 대한 가중치를 동적으로 계산하는 메커니즘을 도입하여 각 시간 단계에서 입력 시퀀스의 서로 다른 부분에 가중치를 부여하고 합산하여 현재 시간 단계의 출력을 얻는 것입니다. . 각 출력을 생성할 때 디코더는 입력 시퀀스의 여러 부분에 서로 다른 주의를 기울이므로 모델이 입력 시퀀스의 중요한 정보에 더 잘 집중할 수 있습니다.
가중치 a 학습
우리의 목표는 이 h가 hs의 개별 단어 벡터와 얼마나 "유사한지" 수치로 표현하는 것입니다.
여기서는 가장 간단한 벡터 내적을 사용합니다.
벡터 유사성을 계산하는 방법에는 여러 가지가 있습니다. 내적 외에도 작은 신경망을 사용하여 점수를 출력하는 관행도 있습니다.
다음으로 s는 이전 Softmax 함수를 사용하여 정규화됩니다.
통합
Attention을 사용하여 seq2seq 구현
주목의 평가
"날짜 형식 변환" 문제를 연구하여 Attention을 사용하여 seq2seq의 효과를 확인했습니다.
날짜 형식 변환 문제
주의를 기울여 seq2seq 학습
주의 시각화
주의에 관한 다른 주제
양방향 RNN
전체적인 밸런스를 고려한다면, "cat"이라는 단어에 대한 정보가 벡터에 좀 더 고르게 담길 수 있기를 바랍니다.
양방향 LSTM은 이전 LSTM 레이어 위에 반대 방향으로 처리되는 LSTM 레이어를 추가합니다.
매 순간 두 LSTM 레이어의 히든 상태를 접합하여 최종 히든 상태 벡터로 사용합니다(스플라이싱 외에 "합계" 또는 "평균" 등도 가능).
Attention 레이어를 사용하는 방법
Attention 레이어의 출력(컨텍스트 벡터)은 다음 순간에 LSTM 레이어의 입력으로 연결됩니다. 이 구조를 통해 LSTM 계층은 컨텍스트 벡터의 정보를 활용할 수 있습니다. 대조적으로, 우리가 구현한 모델은 Affine 레이어에서 컨텍스트 벡터를 사용합니다.
seq2seq 심화 및 연결 건너뛰기
RNN 레이어 심화
LSTM 레이어의 3개 레이어를 사용하여 주의 깊게 seq2seq
잔여 연결
잔여 연결의 교차점에 두 개의 출력이 추가됩니다.
덧셈은 역전파 중에 기울기를 "있는 그대로" 전파하기 때문에 잔여 연결의 기울기는 아무런 영향 없이 이전 레이어로 전파될 수 있습니다. 이렇게 하면 레이어가 심화되더라도 그래디언트 소멸(또는 그래디언트 폭발) 없이 정상적으로 그래디언트가 전파될 수 있으며 학습이 원활하게 진행될 수 있습니다.
주의의 적용
GNMT
기계 번역의 역사
규칙 기반 번역
사례 기반 번역 사용
통계 기반 번역
신경 기계 번역
Google 번역은 2016년부터 실제 서비스에 신경 기계 번역을 사용해 왔습니다. GNMT라는 기계 번역 시스템
GNMT에는 많은 양의 데이터와 컴퓨팅 리소스가 필요합니다. GNMT는 6일 동안 거의 100개의 GPU에서 학습된 대량의 훈련 데이터(1개 모델)를 사용합니다. 또한 GNMT는 8개의 모델을 병렬로 학습할 수 있는 앙상블 학습, 강화 학습 등의 기술을 기반으로 정확도를 더욱 향상시키기 위해 노력하고 있습니다.
변신 로봇
RNN은 가변 길이 시계열 데이터를 잘 처리할 수 있습니다. 그러나 RNN에는 병렬 처리 문제 등의 단점도 있습니다.
RNN은 직전 순간의 계산 결과를 바탕으로 단계별로 계산해야 하기 때문에 시간 방향으로 병렬적으로 RNN을 계산하는 것은 (기본적으로) 불가능하다. 이는 GPU를 사용하는 병렬 컴퓨팅 환경에서 딥러닝을 수행할 때 큰 병목 현상이 발생하므로 RNN을 피할 동기가 있습니다.
Transformer는 RNN을 사용하지 않지만 처리를 위해 Attention을 사용합니다. 이 Transformer에 대해 간단히 살펴보겠습니다.
자기 관심
Transformer는 중요한 Self-Attention 기술을 사용하는 Attention을 기반으로 합니다. Self-Attention은 문자 그대로 "자신에 대한 자신의 관심"으로 번역됩니다. 즉, 시계열 데이터의 각 요소와 다른 요소 간의 관계를 관찰하는 것을 목표로 하는 시계열 데이터 기반 Attention입니다.
하나의 은닉층과 활성화 함수 ReLU가 있는 완전히 연결된 신경망을 사용합니다. 또한, 그림에서 Nx는 회색 배경으로 둘러싸인 요소들이 N번 쌓여 있다는 의미이다.
NTM
NTM(신경 튜링 머신)
신경망은 외부 저장 장치를 사용하여 추가 기능을 얻을 수도 있습니다.
Attention을 기반으로 인코더와 디코더는 컴퓨터에서 "메모리 작업"을 구현합니다. 즉, 인코더는 필요한 정보를 메모리에 쓰고 디코더는 메모리에서 읽는 것으로 해석할 수 있습니다. 필요한 정보를 얻으십시오.
컴퓨터의 메모리 작동을 모방하기 위해 NTM의 메모리 작동은 두 개의 Attention을 사용합니다.
Content-based Attention은 앞에서 소개한 Attention과 동일하며 메모리에서 특정 벡터(쿼리 벡터)의 유사한 벡터를 찾는 데 사용됩니다.
Position-based Attention은 마지막 순간에 Focus된 메모리 주소(메모리 내 각 위치의 가중치)를 앞뒤로 이동하는 데 사용됩니다. 여기서는 1차원 컨볼루션 연산을 통해 달성할 수 있는 기술적 세부 사항에 대한 논의를 생략합니다. 메모리 위치에 따른 이동 기능은 "앞으로 읽으면서(하나의 메모리 주소)"라는 독특한 컴퓨터 활동을 재현할 수 있습니다.
NTM은 장기 기억 문제, 정렬 문제(큰 숫자에서 작은 숫자로 배열) 등을 성공적으로 해결했습니다.
네트워크 최적화 및 정규화
어떤 수학적 트릭도 정보 부족을 보상할 수 없습니다. [코넬리우스 란초스]
두 가지 큰 어려움
최적화
최적화가 어렵고 계산 집약적임
일반화 문제
피팅능력이 너무 강해서 오버핏이 되기 쉽습니다.
네트워크 최적화
네트워크 최적화의 어려움
네트워크 구조의 다양성
일반적인 최적화 방법을 찾는 것은 어렵습니다. 다양한 최적화 방법은 다양한 네트워크 구조에서도 상대적으로 큰 차이를 갖습니다.
저차원 공간의 어려움
초기화 매개변수를 선택하는 방법
국소 최적점에서 벗어나다
고차원 공간의 어려움
초기화 매개변수를 선택하는 방법
안장 지점에서 탈출하는 방법
어떤 차원에서는 가장 높은 지점이고 다른 차원에서는 가장 낮은 지점입니다.
평평한 바닥
심층 신경망에는 많은 매개변수가 있고 어느 정도의 중복성이 있으므로 각 단일 매개변수가 최종 손실에 상대적으로 작은 영향을 미칩니다.
로컬 최소값에 갇혀 있음
최적화
경사하강법 유형
배치 경사하강법
확률적 경사하강법
미니배치 경사하강법
경사하강법의 경우 각 반복에 대해 전체 훈련 데이터에 대한 경사를 계산하려면 더 많은 컴퓨팅 리소스가 필요합니다. 또한 대규모 훈련 세트의 데이터는 매우 중복되는 경우가 많으므로 전체 훈련 세트에 대한 기울기를 계산할 필요가 없습니다.
학습률 감소
학습률은 수렴 속도를 보장하기 위해 처음에는 더 크게 유지되어야 하고, 앞뒤 진동을 피하기 위해 최적의 지점 근처로 수렴할 때는 더 작게 유지되어야 합니다.
유형
역방향 시간 붕괴
지수적 붕괴
자연 지수 붕괴
β는 감쇠율이며 일반적으로 0.96입니다.
AdaGrad, RMSprop, AdaDelta 등과 같이 학습률을 적응적으로 조정하는 방법도 있습니다.
AdaGrad 방법
학습률에 대한 효과적인 기술 중에는 학습이 진행됨에 따라 학습률을 점차 감소시키는 학습률 붕괴라는 방법이 있습니다.
AdaGrad는 이 아이디어를 더욱 발전시켜 동시에 학습하면서 매개변수의 각 요소에 대해 학습 속도를 적절하게 조정합니다.
Ada는 "적절한"을 의미하는 영어 단어 Adaptive에서 유래되었습니다.
이전 SGD와 마찬가지로 W는 업데이트할 가중치 매개변수를 나타내고 편도함수는 기울기를 나타내며 n은 학습률을 나타냅니다.
그러나 이전의 모든 기울기 값의 제곱의 합을 저장하는 새로운 변수 h가 나타납니다. 따라서 학습이 깊어질수록 업데이트 진폭이 작아집니다.
RMSProp 메서드
끝없이 학습하면 업데이트량이 0이 됩니다.
RMSProp 메서드는 과거의 기울기를 모두 균등하게 추가하는 것이 아니라, 추가 작업을 수행할 때 점차적으로 과거의 기울기를 잊어버리고 새로운 기울기에 대한 더 많은 정보를 반영합니다.
기술적으로 말하면 이 작업을 "지수 이동 평균"이라고 하며, 이는 과거 기울기의 규모를 기하급수적으로 줄입니다.
그라데이션 방향 최적화
모멘텀 방식
미니 배치 경사 하강법에서는 매번 선택되는 샘플 수가 상대적으로 적으면 진동 방식으로 손실이 감소합니다.
현재 시점의 기울기 대신 최근 기간의 평균 기울기를 매개변수 업데이트 방향으로 사용합니다.
모멘텀법이라고도 함
SGD의 단점
f(x,y)=(1/20)*x^2 y^2
SGD 기반의 최적화된 업데이트 경로: 지그재그 형태로 최소값(0, 0)을 향해 이동, 효율성이 낮음
개선 방법
이전 SGD와 마찬가지로 W는 업데이트할 가중치 매개변수를 나타내고 편도함수는 기울기를 나타내며 n은 학습률을 나타냅니다.
그러나 물리적 속도에 해당하는 새로운 변수 v가 나타나며, 이는 경사 방향으로 물체에 가해지는 힘으로 이해할 수 있습니다.
아담 방식
운동량은 그릇 안에서 공이 굴러가는 물리적 규칙에 따라 움직이며, AdaGrad는 매개변수의 각 요소에 맞게 업데이트 속도를 조정합니다. 그것들을 결합하는 것이 아담의 아이디어입니다
(현재) 모든 문제에 대해 잘 수행되는 방법은 없습니다. 이 네 가지 방법은 각각 특징이 있고, 각각 잘 해결되는 문제와 해결하지 못하는 문제가 있습니다.
그라데이션 컷오프
그래디언트가 갑자기 증가하는 경우 큰 그래디언트를 사용하여 매개변수를 업데이트하면 최적 지점에서 멀어지게 됩니다.
그래디언트의 모듈러스가 특정 임계값보다 크면 그래디언트가 잘립니다.
그라데이션 모듈러스를 간격으로 제한하고 그라데이션 모듈러스가 이 간격보다 작거나 클 경우 이를 자릅니다.
유형
값으로 자르기
gt = 최대(최소(gt, b), a).
금형에 따라 절단
매개변수 초기화
가우스 분포 초기화
가우스 초기화 방법은 가장 간단한 초기화 방법입니다. 매개변수는 고정된 평균(예: 0)과 고정된 분산(예: 0.01)을 갖는 가우스 분포에서 무작위로 초기화됩니다.
뉴런의 입력 연결 개수가 n(in)인 경우 입력 연결 가중치는 N(0,sqrt(1/nin))의 가우스 분포로 초기화되도록 설정할 수 있습니다.
출력 연결 개수 nout도 고려하면 N(0,sqrt(2/(nin nout)))의 가우스 분포에 따라 초기화될 수 있습니다.
균일하게 분산된 초기화
균일 분포 초기화는 균일 분포를 사용하여 주어진 간격 [-r, r] 내에서 매개변수를 초기화합니다. 하이퍼파라미터 r의 설정은 뉴런의 연결 수에 따라 적응적으로 조정될 수도 있습니다.
활성화 기능 유형
물류 기능
탄
자비에르 초기값
Xavier Glorot 등의 논문에서 권장하는 가중치 초기값을 사용해 보았습니다.
이전 레이어의 노드 수가 n개인 경우 초기값은 표준편차가 (1/sqrt(n))인 가우스 분포를 사용합니다.
ReLU 가중치 초기값
활성화 함수가 ReLU를 사용하는 경우 일반적으로 ReLU 전용 초기값을 사용하는 것이 좋습니다. 이는 Kaiming He et al.이 권장하는 초기값으로 "He 초기값"이라고도 합니다.
현재 레이어의 노드 수가 n개일 때 He의 초기값은 표준편차가 (2/sqrt(n))인 가우스 분포를 사용합니다.
데이터 전처리
다른 단위
각 차원 특성의 다양한 소스와 측정 단위로 인해 이러한 특성 값의 분포 범위가 매우 달라집니다. 서로 다른 샘플 간의 유클리드 거리를 계산할 때 값 범위가 큰 특징이 지배적인 역할을 합니다.
스케일링 정규화
각 특징의 값 범위는 스케일링을 통해 [0, 1] 또는 [-1, 1]로 정규화됩니다.
표준 정규화
z-점수 정규화라고도 함
각 차원 특성은 표준 정규 분포(평균은 0, 표준 편차는 1)를 따르도록 처리됩니다.
데이터 중복성
입력 데이터를 화이트닝한 후에는 특성 간의 상관 관계가 낮고 모든 특성의 분산이 동일합니다.
미백을 달성하는 주요 방법 중 하나는 주성분 분석을 사용하여 성분 간의 상관 관계를 제거하는 것입니다.
레이어별 정규화
네트워크를 훈련하기 위해 확률적 경사하강법을 사용할 때 각 매개변수 업데이트로 인해 네트워크 중간에 있는 각 레이어에 대한 입력 분포가 변경됩니다. 레이어가 깊을수록 입력 분포가 더 명확하게 변경됩니다.
배치 정규화
배치 정규화, BN 방법이라고도 함
각 레이어가 적절한 폭을 갖도록 하기 위해 활성화 값의 분포가 "강제" 조정됩니다.
데이터 분포의 평균이 0, 분산이 1이 되도록 정규화를 수행합니다.
신경망의 모든 중간 계층은 정규화될 수 있습니다.
이점
학습을 빠르게 할 수 있음(학습률을 높일 수 있음)
초기값에 대한 의존도가 낮음(초기값에 그다지 민감하지 않음)
과적합 억제(드롭아웃 필요성 감소 등)
Batch Norm 레이어
Affine->Batch Norm->ReLU
레이어 정규화
배치 정규화의 한계
배치 정규화는 중간 계층의 단일 뉴런에 대한 정규화 작업이므로 미니 배치 샘플의 수가 너무 작아서는 안 됩니다. 그렇지 않으면 단일 뉴런의 통계 정보를 계산하기가 어렵습니다.
순환 신경망과 같은 신경망에서 뉴런의 순 입력 분포가 동적으로 변경되는 경우 일괄 정규화 작업을 적용할 수 없습니다.
계층 정규화는 중간 계층의 모든 뉴런을 정규화합니다.
배치 정규화는 CNN(컨벌루션 신경망)에서 매우 효과적인 반면, 계층 정규화는 RNN(순환 신경망) 및 Transformer 네트워크에서 더 일반적입니다.
초매개변수 최적화
구성
네트워크 구조
뉴런 사이의 연결
레이어 수
레이어당 뉴런 수
활성화 함수의 종류
최적화 매개변수
네트워크 최적화 방법
학습률
소규모 배치의 샘플 크기
정규화 계수
검증 데이터(검증 세트)
테스트 데이터를 사용하여 초매개변수 성능을 평가할 수 없습니다.
하이퍼파라미터 값의 '양호함'을 확인하기 위해 테스트 데이터를 사용하면 하이퍼파라미터 값이 테스트 데이터에만 맞도록 조정됩니다.
학습 데이터는 매개변수(가중치, 편향) 학습에 사용되고, 검증 데이터는 하이퍼파라미터 성능 평가에 사용됩니다. 일반화 능력을 확인하기 위해 테스트 데이터는 마지막에(이상적으로는 한 번만) 사용되어야 합니다.
최적화
그리드 검색
모든 하이퍼파라미터 조합을 시도하여 올바른 것을 목표로 삼으세요 그룹 하이퍼파라미터 구성 방법.
여러 "경험" 값을 선택하십시오. 예를 들어 학습률 α를 설정할 수 있습니다. α ∈ {0.01, 0.1, 0.5, 1.0}.
무작위 검색
하이퍼파라미터의 범위를 설정하고 설정된 하이퍼파라미터 범위에서 무작위로 샘플링합니다.
검증 데이터를 통해 인식 정확도 평가(단, 에포크를 매우 작게 설정)
위의 과정(100회 등)을 반복하고 인식 정확도 결과에 따라 하이퍼파라미터의 범위를 좁힙니다.
베이지안 최적화
동적 리소스 할당
네트워크 정규화
목적: 과적합을 억제하기 위함
체중 감소
가중치 감소는 과적합을 억제하기 위해 자주 사용되는 방법입니다. 이 방법은 학습 과정에서 큰 가중치에 페널티를 줍니다.
간단히 말해서 손실함수는 다음과 같다.
λ는 정규화의 강도를 제어하는 하이퍼파라미터입니다.
폐기 방법
드롭아웃 방식
네트워크 모델이 매우 복잡해지면 가중치 감소만으로는 처리하기 어렵습니다.
학습 과정에서 뉴런을 무작위로 삭제하는 방법은 매번 무작위로 뉴런을 삭제하는 방식을 선택합니다. 가장 간단한 방법은 고정 확률 p를 설정하는 것입니다. 각 뉴런에 대해 이를 유지할지 여부를 결정할 확률 p가 있습니다.
데이터 증대
회전, 뒤집기, 크기 조정, 변환, 노이즈 추가
라벨 스무딩
모델 과적합을 방지하려면 출력 레이블에 노이즈를 추가하세요.
모델 독립 학습 방법
앙상블 학습
특정 전략을 통해 여러 모델을 통합하여 그룹 의사결정을 통해 의사결정 정확도를 향상시킵니다. 앙상블 학습의 주요 문제는 여러 모델을 통합하는 방법입니다. 보다 일반적으로 사용되는 통합 전략에는 직접 평균, 가중 평균 등이 포함됩니다.
자가 훈련 및 협업 훈련
모두 준지도 학습에 속합니다.
자기 훈련
자가 훈련은 먼저 레이블이 지정된 데이터를 사용하여 모델을 훈련하고 이 모델을 사용하여 레이블이 없는 샘플의 레이블을 예측하고 예측 신뢰도가 상대적으로 높은 샘플과 예측된 의사 레이블을 훈련 세트에 추가한 다음 새 모델을 다시 훈련하는 것입니다. 그리고 이 과정을 계속 반복하세요.
협동훈련
공동 훈련은 자가 훈련의 향상된 방법입니다.
서로 다른 관점을 기반으로 하는 두 분류자는 서로를 승격시킵니다. 많은 데이터는 상대적으로 독립적인 다양한 관점을 가지고 있습니다.
다양한 관점의 조건부 독립성으로 인해 다양한 관점에서 훈련된 모델은 다양한 관점에서 문제를 이해하는 것과 동일하며 특정 보완성을 갖습니다. 협업 훈련은 이러한 상보성을 활용하여 자가 훈련을 수행하는 방법입니다. 먼저, 서로 다른 관점에 따라 두 모델 f1과 f2를 훈련 세트에 대해 훈련시킨 다음, f1과 f2를 사용하여 레이블이 지정되지 않은 데이터 세트에 대해 예측 신뢰도가 상대적으로 높은 샘플을 선택하여 훈련 세트에 추가합니다. 두 가지 다른 관점을 모델로 삼아 이 과정을 반복합니다.
다중 작업 학습
일반적인 기계 학습 모델은 필기 숫자 인식, 객체 감지 등과 같은 단일 특정 작업을 목표로 합니다. 다양한 작업에 대한 모델은 해당 훈련 세트에서 별도로 학습됩니다.
두 작업이 관련되어 있으면 둘 사이에 공유된 지식이 있을 것이며 이 지식은 두 작업 모두에 도움이 될 것입니다. 이러한 공유 지식은 표현(특성), 모델 매개변수 또는 학습 알고리즘 등이 될 수 있습니다.
유형
전이 학습
이미 많은 양의 학습 데이터를 가지고 있는 관련 작업이 있는 경우, 이러한 학습 데이터의 분포는 학습 데이터의 상대적으로 큰 규모로 인해 대상 작업의 분포와 다르지만 일부를 학습할 수 있다고 가정합니다. 이를 통해 일반화 가능한 지식이 있으면 이 지식은 Target 작업에 유용할 것이며 어느 정도 도움이 될 것입니다. 관련 작업의 훈련 데이터에 있는 일반화 가능한 지식을 어떻게 목표 작업에 전달하는가가 전이학습을 통해 해결해야 할 문제이다.
전이학습(Transfer Learning)은 소스 도메인(Source Domain) DS에서 학습한 지식을 활용하여 타겟 도메인(Target Domain) DT의 학습 과제를 돕는 서로 다른 두 분야 간의 지식 전달 과정을 말한다. 일반적으로 소스 도메인의 훈련 샘플 수는 대상 도메인의 훈련 샘플 수보다 훨씬 많습니다.
분류
유도적 전이 학습
예상되는 위험(예: 실제 데이터 분포의 오류율)을 최소화하는 모델이 훈련 데이터 세트에서 학습됩니다.
전이 학습 도출
주어진 테스트 세트에서 오류를 최소화하는 모델 학습
Fine-tuning은 전이 학습의 응용 방법입니다. 이는 일반적으로 특정 작업에 대한 모델 성능을 향상시키기 위해 이미 훈련된 모델을 기반으로 추가 훈련을 수행하기 위해 새로운 작업별 데이터 세트를 사용하는 것을 의미합니다. 미세 조정의 목적은 사전 훈련된 모델이 대규모 데이터에 대해 학습한 일반 지식을 사용하여 특정 작업에 대한 학습 프로세스를 가속화하고 최적화하는 것입니다.
평생 학습
질문
훈련이 완료되면 모델은 고정된 상태로 유지되며 더 이상 반복적으로 업데이트되지 않습니다.
모델이 동시에 다양한 작업을 성공적으로 수행하는 것은 여전히 매우 어렵습니다.
지속적인 학습이라고도 불리는 평생학습은 역사적 과제에서 배운 경험과 지식을 활용하여 끊임없이 출현하는 새로운 과제를 학습하도록 돕는 인간과 같은 지속적인 학습 능력을 말하며, 이러한 경험과 지식은 지속적으로 축적되어 변하지 않습니다. 새로운 일을 하고 오래된 지식을 잊어버리세요.
평생학습에서는 평생학습 알고리즘이 과거과제 T1, T2,···, Tm에 대한 모델을 학습했다고 가정한다. m개 작업에 대한 지식을 축적하면서 m1번째 작업을 돕는 지식입니다.
이 설정은 귀납적 전이 학습과 매우 유사하지만, 귀납적 전이 학습의 목표는 지식 축적에 신경 쓰지 않고 대상 작업의 성능을 최적화하는 것입니다. 평생학습의 목표는 지속적인 학습과 지식 축적이다. 또한 평생학습은 다중과제학습과 달리 모든 과제를 동시에 학습하는 것이 아니다.
메타러닝
공짜 점심 없음 정리에 따르면, 보편적 학습 알고리즘은 모든 작업에 효과적이지 않습니다. 따라서 특정 작업을 구현하기 위해 기계 학습 알고리즘을 사용할 때 일반적으로 "문제에 대해 논의"하고 특정 작업을 기반으로 적절한 모델, 손실 함수, 최적화 알고리즘 및 하이퍼 매개 변수를 선택해야 합니다.
자신의 학습 방법을 동적으로 조정하는 능력을 메타 학습이라고 하며 학습의 학습이라고도 합니다.
메타러닝과 관련된 또 다른 머신러닝 문제는 소규모 샘플 학습입니다.
두 가지 일반적인 메타 학습 방법
옵티마이저 기반 메타러닝
서로 다른 최적화 알고리즘의 차이점은 매개변수를 업데이트하는 규칙이 다르다는 점입니다. 따라서 자연스러운 메타 학습은 매개변수를 업데이트하는 규칙, 즉 다른 신경망(예: 순환 신경망)을 통해 경사 하강 과정을 모델링하는 규칙을 자동으로 학습하는 것입니다. 회로망).
모델에 구애받지 않는 메타 학습
이는 단순한 모델 독립적이고 작업 독립적인 메타 학습 알고리즘입니다.