머신 러닝 및 신경망 - 페이지 35

 

CS 198-126: 강의 22 - 다중 모드 학습



CS 198-126: 강의 22 - 다중 모드 학습

다중 모드 학습에는 텍스트, 이미지, 비디오 또는 오디오와 같은 다양한 방식으로 개체를 나타내는 동시에 동일한 개체임을 인식하는 것이 포함됩니다. 강의는 다양한 데이터 세트를 캡처하고 분포 이동 문제를 해결하는 데 있어 다중 모드 학습의 중요성을 설명합니다. 이 비디오는 텍스트 및 이미지 인코더를 사용하여 유사한 이미지-캡션 쌍에 대한 임베딩을 만드는 Contrastive Language Image Pre-Training 방법인 CLIP에 중점을 둡니다. 임베딩은 분류, 로봇 공학, 텍스트를 이미지로 생성, 3D 비전에 사용할 수 있습니다. 발표자는 CLIP 잠재성의 보편성이 기계 학습에서 표현 학습의 중요성과 유용성을 보여준다고 강조합니다. CLIP 방식은 다중 모드 학습 분야의 발전을 가져왔습니다.

  • 00:00:00 비디오의 이 섹션에서 강사는 다중 모드 학습의 개념과 그 중요성을 설명합니다. 다중 모드 학습에는 텍스트, 이미지, 비디오 또는 오디오와 같은 다양한 방식으로 개체를 표현하고 동일한 개체임을 인식하면서 미묘한 차이를 캡처하는 것이 포함됩니다. 다중 모드 데이터 세트는 이러한 모든 데이터 유형으로 구성될 수 있으며 목표는 학습을 위한 더 많은 컨텍스트를 제공하기 위해 모든 정보를 유지하는 것입니다. 강사는 데이터가 다양한 출처와 데이터 세트에서 나올 수 있고 이 모든 추가 정보를 버리면 학습을 위한 정보가 줄어들 수 있기 때문에 다중 모드 학습이 중요하다고 주장합니다.

  • 00:05:00 이 섹션에서는 컴퓨터 비전 모델이 사실적인 데이터로 훈련되고 만화 같은 데이터로 테스트될 때 발생하는 분포 이동 문제에 중점을 둡니다. 문제는 개별 데이터 세트가 가능한 것에 비해 분포가 작다는 것입니다. 데이터의 다양성으로 인해 개체, 데이터 형식 및 관계가 다른 다양한 데이터 세트가 있으므로 분포 이동 문제가 중요한 문제가 됩니다. Multimodal learning은 사용 가능한 모든 데이터와 데이터 간의 관계를 사용하여 더 다양한 데이터에 대해 더 나은 모델을 훈련함으로써 이 문제를 해결하는 것을 목표로 합니다. 목표는 이미지에서 텍스트 및 오디오에 이르기까지 모든 것에 대해 의미 있는 압축 표현을 학습하는 것입니다.

  • 00:10:00 이 섹션에서는 동영상에서 다중 모드 학습의 중요성과 다양한 데이터 세트에 대한 학습 모델과 관련된 문제에 대해 설명합니다. 검토 중인 논문은 Contrastive Language Image Pre-Training의 약자인 CLIP이라고 하며 이미지와 해당 텍스트 간의 관계를 조사하는 것을 목표로 합니다. CLIP 모델의 기본 아이디어는 이미지와 캡션이 관련되어 있으면 이미지와 캡션 모두에 대해 학습된 표현이 유사해야 한다는 것입니다. 이 모델은 이미지 처리를 위한 비전 변환기와 자연어 처리를 위한 변환기의 두 가지 모델을 사용하고 이를 처음부터 훈련합니다. 교육 절차에는 일치하는 이미지-캡션 쌍에 대해 유사하고 다른 쌍에 대해 서로 다른 임베딩을 생성하는 것을 목표로 다양한 소스의 많은 양의 이미지-캡션 쌍을 사용하여 텍스트 및 이미지 인코더를 모두 사전 교육하는 것이 포함됩니다. .

  • 00:15:00 이 섹션에서 발표자는 이미지 인코더와 텍스트 인코더가 함께 작동하여 일치하는 쌍에 대해서는 매우 유사하고 일치하지 않는 쌍에 대해서는 매우 다른 이미지 및 텍스트 데이터의 내장 버전을 생성하는 방법을 설명합니다. 결과 행렬의 대각선 요소는 이상적으로는 매우 큰 일치하는 쌍에 대한 임베딩 간의 내적을 나타내는 반면, 비대각선 요소는 일치하지 않고 매우 작거나 음수여야 하는 임베딩 간의 유사성을 나타냅니다. 발표자는 이 접근 방식이 분류 작업과 유사하다고 설명합니다. 여기서 손실 함수는 대각선을 벗어난 요소를 최소화하면서 대각선 요소를 최대한 크게 만들려고 합니다. 텍스트 인코더와 이미지 인코더는 함께 작동하여 이 목표를 달성하고 일치하는 쌍을 위한 유사한 임베딩을 생성합니다.

  • 00:20:00 이 섹션에서는 CLIP(Contrastive Language-Image Pre-training)이라는 다중 모드 학습 응용 프로그램에 대해 알아봅니다. CLIP은 텍스트 인코더와 이미지 인코더를 사용하여 이미지와 캡션의 임베딩을 생성합니다. 그런 다음 임베딩의 내적을 수행하여 이미지가 캡션과 얼마나 잘 일치하는지 확인합니다. 이를 통해 CLIP은 미세 조정 없이 이미지가 무엇인지 예측할 수 있으며, 이를 제로 샷 예측이라고 합니다. 이 방법은 텍스트와 이미지의 인코딩된 표현이 의미 있고 새 데이터로 잘 일반화될 수 있음을 보여줍니다.

  • 00:25:00 강의의 이 섹션에서 연사는 CLIP 잠재성을 통한 표현 학습의 적용 가능성과 중요성에 대해 논의합니다. 잠재성은 고정된 사전 훈련된 모델을 통해 이미지 인코딩의 일반화 가능하고 의미 있는 출력입니다. 이러한 잠재성에는 이미지의 임베디드 표현에 도움이 될 수 있는 객체 및 로봇 공학의 분류를 포함하여 여러 사용 사례가 있습니다. 발표자는 표현 학습이 모든 곳에 적용 가능하며 텍스트에서 이미지 생성 및 3D 비전으로 유용할 수 있음을 강조합니다. Radiance 필드는 렌더링된 이미지가 입력 캡션에 해당하는 잠재 클립과 일치하는 손실 함수를 사용하여 최적화할 수 있습니다. 최적화 프로세스는 미분 가능하므로 이미지 재구성을 위한 효과적인 도구입니다.

  • 00:30:00 이 섹션에서 발표자는 주어진 프롬프트에 따라 방사 필드를 생성하기 위해 이미지 임베딩을 사용하는 개념에 대해 논의합니다. 이 방법은 비용이 많이 들지만 다양한 데이터를 사전 훈련하고 표현 또는 관계를 사용하여 모든 도메인에 대해 사용 가능한 잠재성을 생성하는 클립 잠재성의 보편성을 보여줍니다. 이 다중 모드 학습 기술은 효과적인 것으로 입증되었으며 기계 학습 분야에서 중요한 하위 분야로 간주됩니다. 발표자는 클립 방식이 시작에 불과하지만 이 분야에서 더 발전을 이뤘다고 말합니다.
 

딥러닝 연구를 위한 Tensorflow - 강의 1



딥러닝 연구를 위한 Tensorflow - 강의 1

동영상 "Tensorflow for Deep Learning Research - Lecture 1"은 라이브러리의 기본 사항과 실용적인 응용 프로그램을 설명하는 딥 레벨 자습서의 필요성을 다루어 TensorFlow에 대한 자습서를 소개합니다. 강의는 딥 러닝 관점에서 TensorFlow를 사용하여 모델을 구축하고 구조화하는 방법을 다룹니다. 이 자습서는 하위 그래프를 실행하여 효율적인 계산 옵션을 제공하는 노드, 에지 및 세션으로 작동하는 방법을 포함하여 계산 그래프 모델을 시각화하기 위해 TensorBoard에서 사용되는 도구도 다룹니다. 강사는 모델 배포 기능을 제공하면서 CPU, GPU, Android 또는 iOS에서 실행할 수 있는 기능을 통해 맞춤형 모델을 구축하고 리소스를 효율적으로 처리하기 위해 TensorFlow를 처음부터 학습할 것을 권장합니다.

  • 00:00:00 이 섹션에서 발표자는 너무 얕지 않고 다른 튜토리얼에서 놓치는 부분을 다루는 비디오 튜토리얼이 필요하다고 설명하면서 TensorFlow에 대한 튜토리얼을 소개합니다. 그는 강의가 CS 20의 Stanford University 콘텐츠를 따르고 Chip Huyen이 만든 슬라이드를 자신의 개인적인 생각으로 사용할 것이라고 발표했습니다. 또한 그는 TensorFlow가 Google에서 개발한 수치 계산용 라이브러리로 그래프 및 수치 계산이 가능하여 로지스틱 회귀에서 딥 러닝 모델에 이르는 다양한 기계 학습 모델을 구축하는 데 적합하다고 지적합니다. TensorFlow는 CPU, GPU, Android 또는 iOS에 모델을 배포하는 기능도 제공합니다.

  • 00:05:00 이 섹션에서 발표자는 중단 시 동일한 지점에서 계속할 수 있도록 하는 체크포인트(저장된 모델 상태)의 개념에 대해 설명합니다. 딥 러닝 프레임워크에서 차별화의 중요성이 강조되고 발표자는 Tensorflow가 프로세스에 제공하는 용이성을 이해하기 위해 역전파 계층을 수동으로 작성하려고 시도할 것을 제안합니다. Tensorflow의 인기는 대규모 커뮤니티에서의 사용에 기인하며 이미지 스타일 전송, 필기 생성 및 StackGAN과 같은 다양한 프로젝트가 논의됩니다. 강의는 Tensorflow의 전산 그래프 모델, 빌드 함수 및 구조화 모델을 딥 러닝 관점에서 다루는 것을 목표로 합니다. 마지막으로 연사는 Tensorflow 웹사이트를 최신 API 및 라이브러리의 소스로 사용하라고 조언합니다.

  • 00:10:00 이 섹션에서 발표자는 TensorFlow를 처음부터 배우는 것의 중요성에 대해 논의합니다. 높은 수준의 추상화는 더 복잡한 작업을 처리할 수 있지만 코드 이면의 작업을 이해하는 것은 사용자 지정 모델을 만드는 데 중요합니다. 발표자는 TensorFlow가 계산의 정의를 실행에서 분리하여 계산 그래프를 조합하고 세션을 사용하여 작업을 실행한다고 설명합니다. 이 섹션에서는 TensorFlow에서 작업을 정의하여 내장 도구인 TensorBoard를 사용하여 시각화할 수 있는 그래프를 만드는 방법을 설명합니다. 사용된 샘플 코드는 에지 값이 텐서 값을 나타내는 연산자 및 텐서에 대한 노드를 보여줍니다.

  • 00:15:00 이 섹션에서 강사는 TensorFlow 그래프의 노드 및 에지와 그래프 내에서 계산을 실행하기 위한 세션 사용에 대해 설명합니다. 노드는 연산자, 변수 또는 상수가 될 수 있으며 가장자리는 텐서입니다. 세션은 필요한 리소스를 관리하는 세션과 함께 그래프를 인스턴스화하고 계산을 실행하는 데 사용됩니다. 세션으로 그래프의 특정 노드를 실행하면 그래프를 계산하고 노드의 값을 반환하며 강사는 덧셈을 사용하는 예제로 이를 시연합니다. 세션 개체는 연산자 및 텐서 개체가 실행할 리소스 환경을 캡슐화합니다. 강사는 명시적으로 세션을 종료하는 대신 "with" 문을 사용하는 방법도 언급합니다.

  • 00:20:00 이 섹션에서는 동영상에서 Tensorflow의 지연 평가 개념을 설명합니다. Tensorflow에서 그래프가 생성될 때 미리 계산되거나 어딘가에 캐시되지 않지만 계산은 필요할 때 느리게 수행됩니다. 게으른 평가의 힘은 모든 것을 계산할 필요가 없다는 사실에서 나옵니다. 따라서 모델을 더 깊이 따라가면서 많은 계산을 절약할 수 있습니다. session dot run 메서드를 호출할 때 첫 번째 인수는 계산해야 하는 가져오기 목록 내의 노드 목록이며 Tensorflow는 이러한 모든 다른 노드를 계산하고 결과를 다시 목록으로 제공합니다.

  • 00:25:00 이 섹션에서 강사는 여러 CPU 또는 GPU에서 하위 그래프를 병렬로 실행하는 기능을 포함하여 TensorFlow에서 계산을 그래프로 모델링할 때의 이점에 대해 설명합니다. 그들은 TF 장치 GPU 명령을 사용하여 특정 GPU에서 실행할 특정 그래프를 지정하는 방법과 TensorFlow에서 여러 그래프를 만드는 방법을 설명합니다. 이는 여러 모델을 병렬로 실행할 수 있는 앙상블 학습과 같은 경우에 유용할 수 있습니다. 또한 강사는 TensorFlow의 세션은 리소스 사용량 측면에서 욕심이 많을 수 있으므로 여러 그래프를 사용할 때 리소스를 신중하게 관리해야 할 수도 있음을 지적합니다.

  • 00:30:00 이 섹션에서는 강사가 TensorFlow에서 그래프를 만들고 조작하는 방법에 대해 설명합니다. 여러 세션을 만들 수 있지만 세션 간에 데이터를 전달하는 것이 복잡할 수 있다고 설명합니다. 단순화를 위해 하나의 세션만 사용하는 것이 좋습니다. 그래프에 노드를 추가하려면 인스턴스화된 그래프를 기본값으로 설정할 수 있는 TF dot Graph API를 사용합니다. 세션이 인스턴스화되면 그래프가 인수로 전달될 수 있으며 전체 실행 환경이 이를 중심으로 생성됩니다. 두 개의 그래프를 혼합하지 않는 것이 중요하며 기본 그래프에서 핸들을 얻으려면 API TF dot get underscore 기본값이 사용됩니다.

  • 00:35:00 이 섹션에서는 발표자가 TensorFlow에서 그래프를 사용할 때의 이점에 대해 설명합니다. 이점 중 하나는 전체 그래프를 실행하지 않고 하위 그래프와 단일 작업을 실행하여 계산을 보다 효율적으로 수행할 수 있다는 것입니다. 또한 TensorFlow에는 분산 모드가 있어 하위 그래프를 사용하여 계산을 설명할 때 다양한 장치와 시스템에서 계산을 실행할 수 있습니다. 이 섹션에서 중요한 점은 계산 그래프를 설정하고 세션 내에서 하위 그래프를 실행하는 것의 중요성입니다.
 

딥러닝 연구를 위한 Tensorflow - 강의 2



딥러닝 연구를 위한 Tensorflow - 강의 2

Deep Learning Research를 위한 TensorFlow에 대한 강의는 기본 작업, Tensor 유형, 자리 표시자 및 Lazy Loading을 포함한 광범위한 주제를 다룹니다. 실행 중인 그래프를 시각화하기 위해 TensorBoard를 활용하는 것의 중요성을 강조하고 TensorFlow API의 다양한 기능(랜덤 셔플, 랜덤 크롭, TF.dot 다항식 및 랜덤 감마 함수 포함)에 대해 설명합니다. 이 비디오는 또한 다양한 데이터 유형에 대한 0을 정의하고, 변수를 초기화하고, 변수에 값을 할당하는 개념과 TensorFlow 대화형 세션을 사용할 때의 이점을 다룹니다. 마지막으로 TensorFlow에서 자리 표시자의 사용에 대해 자세히 다루고 모양이 정의되지 않은 자리 표시자를 사용할 때 발생할 수 있는 문제에 대해 설명합니다.

연사는 또한 여러 데이터 포인트를 공급하고 무료 사전을 사용하는 방법을 포함하여 TensorFlow의 자리 표시자 사용에 대해 논의합니다. 그런 다음 강의는 루프에서 동일한 작업의 여러 노드로 인해 그래프가 팽창하는 것을 방지하기 위해 계산이 런타임까지 지연되는 지연 로딩으로 이동합니다. 변수 정의 및 컴퓨팅 기능에 대한 계산 및 구조화 코드에서 작업 개체의 정의를 분리하면 TensorFlow에서 함수를 호출할 때 발생하는 문제를 방지하는 데 도움이 됩니다. 발표자는 또한 TensorFlow 코드를 효율적으로 구조화하기 위해 속성을 사용하는 동안 옵티마이저가 교차 엔트로피를 최소화하고 가중치와 편향을 업데이트하는 방법을 다룹니다.

  • 00:00:00 강의의 이 섹션에서 강사는 기본 작업, 텐서 유형, 자리 표시자 및 지연 로드를 다룹니다. TensorBoard를 사용하여 시각화되는 간단한 그래프 프로그램과 함께 TensorBoard를 사용하여 TF 그래프를 시각화하는 방법을 보여줍니다. 이 프로세스에는 세션 컨텍스트에 TF 테이블 요약 파일 작성기를 추가하고, 이벤트를 쓸 위치를 제공하고, 쓸 내용을 지정한 다음 완료되면 작성기를 닫는 작업이 포함됩니다. 또한 이름 인수를 추가하여 그래프를 더 읽기 쉽게 만드는 방법도 보여줍니다.

  • 00:05:00 이 섹션에서 발표자는 실행 중인 그래프를 시각화하기 위해 TensorBoard를 활용하는 것의 중요성을 강조합니다. 이는 다른 프레임워크에서는 쉽게 사용할 수 없는 TensorFlow의 자동 기능입니다. 그런 다음 강의에서는 TF.constant 함수의 시그니처와 그 값, 모양 및 데이터 유형을 지정하거나 추론하는 방법에 대해 자세히 설명합니다. 또한 연사는 verify_shape가 true 또는 false로 설정될 때 발생하는 일과 TensorFlow가 상수의 고유한 이름을 처리하는 방법을 설명합니다. 마지막으로 강의에서는 벡터와 행렬을 만들고 함께 추가하고 TensorBoard를 사용하여 그래프를 시각화하는 방법을 보여줍니다.

  • 00:10:00 강의의 이 섹션에서는 TensorFlow의 브로드캐스팅 주제가 소개되고 NumPy와 유사한 점을 보여줍니다. 행렬에 상수를 더하고 곱하는 예를 통해 브로드캐스팅을 보여줍니다. 0이든 1이든 특정 값으로 미리 채워진 텐서를 생성하는 개념과 TF.fill 메서드를 사용하여 사용자 정의 값으로 채워진 텐서를 생성하는 방법도 다룹니다. 이러한 텐서의 데이터 유형을 올바르게 설정하는 것의 중요성이 강조됩니다. 전반적으로 강의는 TensorFlow와 NumPy와 같은 다른 수치 기반 라이브러리 간의 유사점과 차이점을 이해하는 것이 중요함을 강조합니다.

  • 00:15:00 이 섹션에서 발표자는 Tensorflow에서 사용할 수 있는 몇 가지 다른 유형의 제약 조건 및 시퀀스에 대해 설명합니다. 한 가지 예는 linspace를 사용하여 시작 및 중지 값이 float 32 또는 float 64인 일련의 등거리 간격을 만드는 것입니다. 또 다른 예는 정규 분포에서 샘플링하여 지정된 모양의 텐서를 생성하는 무작위 정규 함수입니다. Truncated Normal은 비슷하지만 평균의 두 표준 편차 내에 있는 샘플입니다. 마지막으로 랜덤 셔플은 특정 차원에서 텐서의 값을 셔플하는 방법으로 논의됩니다. 연사는 근육 기억력을 개발하고 문서에 지속적으로 의존하지 않도록 이러한 기능을 연습할 것을 제안합니다.

  • 00:20:00 이 섹션에서는 강사가 Tensorflow API의 다양한 기능에 대해 설명합니다. 기본적으로 4차원에서 데이터를 섞는 랜덤 셔플 기능을 시작으로 이미지 데이터 세트에 유용합니다. 무작위 자르기 기능은 텐서에서 지정된 모양의 연속 데이터 블록을 자릅니다. TF.dot 다항 함수는 주어진 로짓 텐서와 샘플 수를 사용하여 다항 분포에서 샘플링합니다. 마지막으로 모양과 베타라는 두 가지 매개변수가 있는 통계의 또 다른 분포인 랜덤 감마 함수에 대해 설명합니다.

  • 00:25:00 이 섹션에서 발표자는 TensorFlow 함수를 사용하여 딥 러닝 연구를 위해 무작위로 생성된 상수 및 시퀀스를 생성하는 방법에 대해 설명합니다. set_random_seed 기능이 도입되어 사용자가 전체 그래프에 대해 임의 피드를 설정할 수 있으므로 결과가 보다 결정적으로 임의적으로 생성되고 사용자가 일관되게 실험을 반복할 수 있습니다. 또한 연사는 요소별 덧셈, 행렬 곱셈, 모듈로 연산과 같은 기본 연산을 위한 다양한 TensorFlow 함수를 설명합니다. 또한 발표자는 부울 및 문자열과 같은 기본 Python 유형 중 일부를 TensorFlow와 함께 사용할 수 있다고 강조합니다.

  • 00:30:00 강의의 이 섹션에서 발표자는 TensorFlow에서 벡터, 행렬 및 문자열과 같은 다양한 데이터 유형에 대해 0을 정의하는 개념과 각 유형에 대해 예상되는 출력에 대해 논의합니다. 또한 느린 32 64에서 8 16 32 64까지 포함하는 TensorFlow 데이터 유형과 NumPy와 상호 교환하여 사용할 수 있는 방법을 다룹니다. 또한 발표자는 나중에 문제를 일으킬 수 있는 그래프 정의에 저장되므로 TensorFlow에서 상수를 사용하지 않도록 주의합니다.

  • 00:35:00 이 섹션에서 발표자는 TensorFlow 변수 사용에 대해 논의하고 사용자가 값 및 선택적 이름과 함께 TFDOTvariable을 사용하여 변수를 정의할 수 있다고 설명합니다. 크기는 입력되는 값에서 유추되며 사용자는 TF.global_variables_initializer() 함수를 사용하여 변수를 초기화하도록 선택할 수 있습니다. 화자는 초기화되지 않은 변수가 오류로 이어질 수 있지만 사용자는 필요한 경우 변수의 하위 집합만 초기화할 수 있다고 경고합니다. 또한 화자는 상수는 연산자이고 변수는 사용자가 호출할 수 있는 여러 함수와 메서드가 있는 클래스이므로 상수는 변수와 다르다고 설명합니다.

  • 00:40:00 이 섹션에서는 동영상에서 TensorFlow에서 변수를 초기화하는 다양한 방법을 설명합니다. 그 중 하나는 특정 값으로 변수에 "할당" 작업을 호출하는 것입니다. 이 접근 방식은 전이 학습을 사용하여 모델을 교육할 때 유용할 수 있습니다. 여기서 일부 계층에는 사전 교육된 모델의 값이 할당되고 다른 계층은 무작위로 초기화됩니다. 이 동영상에서는 단일 변수를 초기화하는 방법과 "eval" 메서드를 사용하여 변수 값을 가져오는 방법도 설명합니다. 또한 동영상에서는 변수에 값을 할당할 때 변수가 이전에 초기화되지 않았어도 괜찮으며 "할당" 작업은 값을 할당하기 전에 변수를 초기화할 수 있다고 설명합니다.

  • 00:45:00 이 섹션에서는 변수를 초기화하고 변수에 값을 할당하는 동영상을 다룹니다. 초기화 작업은 변수의 초기 값을 변수 자체에 할당합니다. 또한 할당 연산은 변수의 현재 값을 새 값과 더하거나 빼거나 곱하는 반면 할당 하위 연산은 현재 값에서 새 값을 뺍니다. 여러 세션은 자체 변수 및 초기화 복사본을 유지하며, 예기치 않은 결과를 피하기 위해 여러 세션을 처리할 때 실행 경로를 신중하게 관리하고 따르는 것이 중요합니다. 마지막으로 초기화되지 않은 변수는 할당이나 작업에 아무런 영향을 미치지 않으며 리소스를 해제하려면 모든 세션을 닫아야 합니다.

  • 00:50:00 이 섹션에서 발표자는 TensorFlow 라이브러리의 변수 초기화에 대해 설명합니다. TensorFlow를 실행할 때 코드에서 사용되는 모든 변수는 초기화되어야 합니다. 변수가 서로 의존할 수 있으므로 여러 변수를 사용할 때 위험할 수 있습니다. 이와 같은 경우 변수 초기화 값을 사용하여 다른 변수를 초기화하기 전에 변수 값이 안전한지 확인해야 합니다. 그런 다음 발표자는 계속해서 TensorFlow 대화형 세션 사용의 이점과 세션을 사용하여 코드 내에서 일련의 작업을 평가하는 방법을 설명합니다. 마지막으로 연사는 최종 작업을 호출하기 전에 모든 관련 작업이 실행되도록 하는 방법인 제어 종속성에 대해 설명합니다. 이는 많은 작업을 포함하는 복잡한 기계 학습 모델에서 유용할 수 있습니다.

  • 00:55:00 이 섹션에서는 계산에 사용될 데이터 값을 몰라도 그래프를 조립할 수 있는 TensorFlow의 자리 표시자에 대해 설명합니다. 자리 표시자는 라인 아래에서 계산될 실제 값의 자리 표시자 역할을 하며 유형 및 모양이 정의된 TF.placeholder 연산자를 사용하여 정의됩니다. 자리 표시자와 관련된 작업을 실행할 때 자리 표시자와 해당 값으로 사전을 만들어야 하며 이 사전은 session.run() 호출에 제공됩니다. 자리 표시자는 모양을 없음으로 설정할 수 있지만 일부 작업에서는 모양을 정의해야 하므로 오류가 발생할 수 있습니다.

  • 01:00:00 이 섹션에서 비디오는 자리 표시자와 TensorBoard에서 시각화할 수 있는 자리 표시자가 어떻게 자체 기반에서 유효한 일급 작업인지에 대해 설명합니다. 이 섹션에서는 또한 여러 데이터 포인트를 입력하는 방법과 그래프의 변수 또는 상수에 대해 자유 사전을 사용하는 방법을 다룹니다. 그런 다음 비디오는 객체가 필요할 때만 생성되는 레이지 로딩과 그래프를 실행하기 전에 노드가 생성되는 일반 로딩으로 이동합니다. 지연 로딩의 개념은 특히 대규모 데이터 세트로 작업할 때 메모리 관리에 도움이 됩니다.

  • 01:05:00 이 섹션에서는 연사가 지연 로딩과 TensorFlow에 미치는 영향을 설명합니다. 지연 로딩은 계산이 그래프 구성이 아닌 런타임까지 연기되는 기술입니다. 이는 특히 루프에서 계산 그래프에서 동일한 작업의 여러 노드로 이어질 수 있습니다. 그래프 부풀림 및 기타 관련 문제를 방지하기 위해 연사는 작업 개체의 정의를 계산 및 작업 실행과 분리할 것을 권장합니다. 또한 화자는 변수 정의가 한 곳에 있고 컴퓨팅 기능이 다른 곳에 있도록 코드를 구성하는 것의 중요성을 강조합니다.

  • 01:10:00 이 섹션에서는 TensorFlow를 딥러닝 연구에 사용할 때 함수 호출 문제를 피하기 위해 코드를 구성하는 방법에 대해 강사가 설명합니다. Python 속성을 사용하여 강사는 'start_prediction', 'optimized' 및 'error'와 같은 내부 속성을 정의하는 방법을 보여줍니다. 코드 블록의 첫 번째 부분은 작업을 추가하기 전에 데이터 크기, 대상 크기, 가중치 및 편향을 계산합니다. 이 작업의 결과 출력이 그래프에 추가됩니다. '최적화' 함수는 동일한 패턴을 따르며 처음 호출될 때 초기 노드를 생성하고 이후에 호출될 때 이러한 노드에 대한 핸들을 반환합니다.

  • 01:15:00 이 섹션에서 연사는 옵티마이저가 교차 엔트로피를 최소화하고 TensorFlow에서 가중치와 편향을 업데이트하는 방법에 대해 설명합니다. 옵티마이저가 처음 호출되면 TensorFlow는 역전파를 수행하고 손실에 기여하는 변수를 업데이트합니다. 이후 옵티마이저가 호출되면 TensorFlow는 이미 그래프를 가지고 있으며 추가 노드를 호출하지 않고 가중치를 최소화하고 업데이트하기 위해 들어오는 노드를 계산합니다. 속성을 사용하면 TensorFlow 코드를 보다 효율적으로 구조화하는 데 도움이 됩니다. 다음 강의에서는 이 과정을 더 잘 이해하기 위한 예를 제공할 것입니다.
 

딥러닝 연구를 위한 Tensorflow - 강의 3



딥러닝 연구를 위한 Tensorflow - 강의 3

딥러닝 연구를 위한 TensorFlow에 대한 세 번째 강의에서는 MNIST 데이터 세트를 사용하여 선형 회귀 및 로지스틱 회귀를 다룹니다. 강사는 TensorFlow에서 입력 데이터에 대한 자리 표시자 생성, 가중치 및 편향에 대한 학습 가능한 변수 초기화, 예측 도출, 손실 계산 및 특정 학습률을 사용하여 옵티마이저를 경사 하강법으로 정의하여 선형 회귀 모델을 학습하는 방법을 보여줍니다. 강의에서는 미니배치 확률적 경사하강법과 변수의 모양을 기억하는 것의 중요성에 대해서도 설명합니다. 모델의 정확도는 TF argmax 함수에서 구한 최대값의 인덱스를 목표 변수 y와 비교하여 TF reduce sum과 TF float를 이용하여 정확한 예측 수를 계산하고 이를 총 테스트 수로 나누어 계산한다. 예. 마지막으로 강사는 이 모델이 강력한 것으로 간주되지 않으며 더 높은 정확도를 제공하는 컨볼루션 레이어와 같은 더 강력한 모델이 있다고 언급합니다.

  • 00:00:00 이 섹션에서는 연사가 딥 러닝 연구를 위한 TensorFlow에 대한 세 번째 강의를 시작하고 이전 강의의 자료를 검토하는 것으로 시작합니다. TensorFlow가 계산 그래프의 정의를 실행에서 분리하는 방법과 다양한 작업을 그래프에 추가하여 그래프를 구성하는 방법을 설명합니다. 그런 다음 그래프 내에서 TF 상수, 변수, 자리 표시자 및 해당 기능에 대해 논의합니다. 연사는 게으른 로딩을 피하는 것의 중요성을 강조하고 대신 최적의 효율성을 위해 그래프의 조립과 실행을 분리합니다. 그런 다음 선형 회귀의 첫 번째 예를 소개하고 데이터 세트의 독립 변수를 기반으로 종속 변수 Y를 예측하는 방법을 설명합니다. 화자는 청자가 예제를 따라하면서 문제를 스스로 해결하도록 권장합니다.

  • 00:05:00 이 섹션에서는 강사가 선형 회귀의 기본 사항을 설명하고 TensorFlow에서 선형 회귀 모델을 훈련하는 방법을 시연합니다. y의 예측값이 W에 X를 곱하고 B를 더한 간단한 선형 모델을 사용합니다. 손실은 예측값과 Y의 실제 값의 차이로 계산되며, 학습은 다음을 최적화하여 손실을 최소화합니다. W와 B의 훈련 가능한 변수. 그런 다음 강사는 입력 데이터가 화재 수이고 출력 대상 변수가 주어진 샘플의 테스트 수인 선형 회귀 예제에 대한 코드를 공유합니다. 이 코드는 입력 데이터에 대한 자리 표시자를 만들고, W 및 B의 훈련 가능한 변수를 초기화하고, 예측을 제시하고, 손실을 계산하고, 최적화 프로그램을 특정 학습 속도의 경사 하강법으로 정의하는 방법을 보여줍니다.

  • 00:10:00 이 섹션에서는 강사가 딥 러닝 연구를 위해 TensorFlow에서 모델을 교육하는 과정을 설명합니다. 모델을 생성하고 손실 함수를 설계한 후 다음 단계는 세션을 시작하고 정의된 에포크 수 동안 모델을 실행하는 것입니다. 각 시대에는 세션을 통해 교육 데이터를 반복적으로 실행하고 손실을 최소화하기 위해 변수를 업데이트하는 작업이 포함됩니다. TensorBoard를 통해 프로세스를 시각화하고 결과 모델을 사용하여 주어진 입력 값에 대한 출력을 예측할 수 있습니다. 강사는 또한 모델의 예측에 영향을 미치는 데이터의 이상치의 존재에 주목합니다.

  • 00:15:00 이 섹션에서 강사는 TensorFlow의 학습 모델에서 옵티마이저의 역할을 설명하고 기울기 하강법, 기울기 모멘텀, Adam, RMSprop, 근위 기울기 및 근위 a grad를 포함한 여러 가지 옵티마이저를 나열합니다. 강사는 모델이 일반화될 수 있는지 확인하기 위해 이전에 본 적이 없는 데이터에 대한 모델 성능 테스트의 중요성을 강조합니다. 이상값에 대한 제곱 오차 손실 함수의 민감도를 다루기 위해 강사는 Huber 손실 함수를 소개하고 작동 방식을 설명합니다. 강사는 또한 TensorFlow에서 Huber 손실 함수를 코딩하는 방법에 대한 지침을 제공합니다.

  • 00:20:00 이 섹션에서 강사는 딥러닝에서 일반적으로 사용되는 손실 함수인 Huber 손실의 구현에 대해 설명합니다. Huber 손실은 회귀 문제에 사용되며 예측과 레이블 간의 잔차를 찾는 방식으로 작동합니다. 잔차가 Delta 값보다 작으면 Small Res라는 함수가 반환됩니다. 그러나 Delta보다 크면 Large Res가 반환됩니다. 그런 다음 강사는 MNIST 데이터 세트를 사용하여 로지스틱 회귀에 대해 논의합니다. 로지스틱 회귀는 분류 문제에 사용되며 로짓을 X에서 W 더하기 B로 계산하여 작동합니다. 그 결과는 소프트맥스 함수를 통해 전달되어 확률 분포를 생성합니다. 이 경우에 사용되는 손실 함수는 두 확률 분포 사이의 거리를 측정하는 교차 엔트로피 손실입니다.

  • 00:25:00 이 섹션에서 강사는 미니 배치 확률적 경사하강법의 개념과 딥 러닝을 위한 모델 교육 중 배치 사용에 대해 설명합니다. 그렇게 함으로써 GPU 메모리를 최대한 활용하는 데 도움이 되며 전체 훈련 세트를 사용할 수 없을 때 효율적입니다. 이 자습서에는 모델에 대한 자리 표시자를 만들고, 입력 및 출력 기능에 대한 가중치 및 편향 값을 초기화하고, 초기화를 위해 tf.random.normal 함수를 사용하여 tensorflow로 모델을 만드는 단계가 포함되어 있습니다. 이러한 변수를 만드는 동안 이러한 변수의 모양을 기억하는 것의 중요성, 특히 마지막 입력 기능 차원과 클래스 수를 강조했습니다.

  • 00:30:00 이 섹션에서는 교차 엔트로피 손실 함수를 사용하여 손실을 계산하는 배치 크기가 10인 단순 DF 모델에 대해 설명합니다. 옵티마이저가 정의되고 모델이 훈련되면 올바른 예측의 총 수를 찾기 위해 테스트됩니다. 올바른 예측은 확률 값이 모델에 공급되고 실제 레이블과 비교되어 올바른 예측 값을 계산하는 로짓 배치 및 softmax 함수를 사용하여 계산됩니다. 과적합을 피하기 위해 테스트 세트에서 옵티마이저를 실행하지 않는 것이 좋습니다.

  • 00:35:00 이 섹션에서는 발표자가 모델의 정확도를 계산하는 방법을 설명합니다. TF argmax 함수는 행의 최대값을 구하는 데 사용되며 확률이 가장 높은 숫자의 인덱스를 반환합니다. 이 인덱스를 대상 변수 y와 비교합니다. 그런 다음 TF reduce sum과 TF float를 사용하여 올바른 예측 수를 계산합니다. 마지막으로, 정확한 예측의 수를 테스트 예제의 총 수로 나누어 정확도를 얻습니다. 이 특정 선형 모델의 경우 90%입니다. 발표자는 또한 이 모델이 강력한 것으로 간주되지 않으며 더 높은 정확도를 제공하는 컨볼루션 레이어와 같은 더 강력한 모델이 있음을 언급합니다.
 

딥러닝 연구를 위한 Tensorflow - 강의 4



딥러닝 연구를 위한 Tensorflow - 강의 4

딥 러닝 연구를 위한 TensorFlow 시리즈의 강의 4에서 연사는 딥 러닝을 기반으로 하는 자연 언어 처리의 단어 임베딩에 대해 자세히 설명합니다. 강의는 NLP 문제에 대한 학습 단어 임베딩의 개념을 설명하고 신경망에서 단어를 수치 벡터로 표현하는 과정을 설명합니다. 이 강의에서는 AI 기반 CBOW 및 스킵 그램을 사용하여 단어 벡터를 생성하는 다양한 방법과 네거티브 샘플링 및 NCE를 사용하여 softmax에서 계산 복잡성 문제를 해결하는 방법에 대해 설명합니다. 또한 강사는 TensorFlow에 변수를 삽입하고 t-SNE를 사용하여 고차원 단어 벡터를 축소된 차원으로 시각화하는 과정을 강조합니다. 마지막으로 강의는 다룬 개념의 요약과 단어 모델 구축에 초점을 맞출 다음 강의에 대한 간략한 설명으로 마무리됩니다.

  • 00:00:00 이 섹션에서는 강사가 딥러닝을 기반으로 하는 NLP의 단어 임베딩 개념에 대해 설명합니다. 단어 임베딩은 신경망에서 단어를 숫자로 나타내는 방법으로, 단어 사이의 의미론적 관계를 캡처합니다. 목표는 국가와 같은 유사한 개념을 2차원 공간에 투영할 때 함께 클러스터링할 수 있는 모델을 구축하는 것입니다. 강사는 또한 카운팅을 통해 단어 임베딩을 학습하는 과정을 설명하고 신경망과 함께 역전파를 사용하는 새로운 접근 방식을 소개합니다.

  • 00:05:00 이 섹션에서 화자는 동시 발생 행렬을 사용하여 단어를 벡터로 나타내는 방법에 대해 설명합니다. 그러나 동시 발생 행렬이 매우 크고 희박하여 작업하기가 어렵습니다. 이 문제를 해결하기 위해 화자는 잘린 SVD를 사용하여 행렬의 낮은 순위 근사값을 찾을 것을 제안합니다. 여기에는 행렬을 3개의 행렬로 분해하고 표현으로 사용할 오른쪽 특이 벡터의 첫 번째 K만 선택하는 작업이 포함됩니다. 그러나 SVD는 특히 대규모 어휘의 경우 계산 비용이 많이 드는 작업이므로 확장하기가 어렵습니다. 게다가 어휘에 새 단어를 추가하면 전체 계산을 다시 해야 합니다.

  • 00:10:00 이 섹션에서는 AI 생성 기반 방법을 사용하여 단어 벡터를 생성하는 두 가지 방법인 CBOW(Continuous Bag of Words)와 스킵 그램에 대해 설명합니다. CBOW는 대상 단어 주변의 컨텍스트를 사용하여 중심 단어를 예측하는 반면 skip gram은 중심 단어를 사용하여 컨텍스트 단어를 예측합니다. 각 단어를 표현하기 위해 원-핫 벡터를 사용하고 단어 벡터를 학습하기 위해 간단한 신경망을 통해 가중치 행렬을 생성합니다. 학습 샘플은 창 크기를 선택하고 창을 텍스트 위로 이동하여 선택합니다. 신경망은 문장 중간에 특정 단어가 있는 상황에서 다른 단어의 확률을 찾도록 훈련됩니다.

  • 00:15:00 강의의 이 섹션에서 발표자는 단어를 벡터로 표현하여 신경망에서 해석할 수 있도록 하는 단어 임베딩 기술을 설명합니다. 이 기술은 문맥에서 무작위로 단어를 선택하고 가중치 행렬을 사용하여 단어 벡터를 학습한 다음 출력 행렬과 쌍을 이루어 어휘에서 단어의 확률 분포를 생성합니다. softmax 함수는 스칼라 출력 분포를 정규화하는 데 사용되므로 유사한 컨텍스트를 가진 단어에 비슷한 확률이 할당됩니다. 이 접근 방식을 사용하여 강의의 예는 유사한 컨텍스트에서 Intelligent 및 Smart라는 단어가 어떻게 발생하는지 보여 주므로 이 두 단어에 대한 단어 벡터는 매우 유사합니다.

  • 00:20:00 이 섹션에서 강사는 softmax에서 발생하는 계산 복잡성 문제에 대한 잠재적 솔루션에 대해 논의합니다. 이 문제를 해결하기 위해 일반적으로 사용되는 두 가지 방법은 네거티브 샘플링과 잡음 대비 추정(NCE)입니다. NCE는 이론적인 보증으로 softmax를 근사화할 수 있지만 두 방법 모두 실용적인 목적을 위해 유사한 결과를 생성합니다. 그런 다음 강의에서는 경험적 및 지식 분포의 정의에 대해 자세히 설명합니다. 여기서 목표는 모델의 매개변수를 사용하여 경험적 분포를 근사화하는 것입니다. 마지막으로 강사는 언어 모델 추정 문제를 줄이기 위한 방법으로 NCE를 소개합니다.

  • 00:25:00 이 섹션에서 발표자는 프록시 이진 분류를 사용하여 2클래스 교육 문제에 대한 데이터를 생성하는 방법을 설명합니다. 그들은 P 물결표 C에서 중심 단어를 샘플링한 다음 PT 작은 P 물결표 W 쉼표 C에서 하나의 참 샘플을 취합니다. 그들은 QW를 사용하여 K 노이즈 샘플을 생성하고 레이블 D를 할당합니다. 데이터 포인트는 노이즈입니다. 그런 다음 두 분포의 혼합을 생성하여 두 클래스 데이터에서 D, 쉼표 W의 결합 확률을 계산합니다. 조건부 확률의 정의를 사용하여 D가 0일 때와 1일 때 두 경우에 대해 W와 C가 주어졌을 때 이것을 D의 조건부 확률로 바꿀 수 있습니다.

  • 00:30:00 이 섹션에서 발표자는 비용이 많이 드는 분할 함수 계산 문제와 NCE(노이즈 대조 추정)를 사용하여 이를 해결하는 방법에 대해 논의합니다. NCE는 경험적 문맥 단어마다 분할 함수를 매개변수로 추가하고 역전파를 통해 학습할 것을 제안합니다. Vc 매개변수를 1로 고정하고 P 물결표 W 쉼표 C를 분할 함수로 나눈 u 세타 W 쉼표 C로 대체하여 Vc로 이진 분류 문제를 얻습니다. 목적은 로그 확률로 기록될 수 있는 K개의 음성 샘플에 대한 D의 조건부 우도를 최대화하는 것입니다. 발표자는 NCE가 예상을 몬테카를로 근사로 대체하여 프로세스의 계산 비용을 줄이는 방법을 설명합니다.

  • 00:35:00 이 섹션에서는 네거티브 샘플링(NS) 대신 잡음 대비 추정(NCE)을 사용하는 방법에 대해 설명합니다. NCE는 언어 모델링 목적을 이진 분류 문제로 줄일 수 있으며 모델 매개변수에 대해 동일한 지점에서 목적이 실현됨을 보여줍니다. NCE 손실에 대한 TensorFlow API와 이름 범위를 사용하여 TensorBoard에서 더 나은 시각화를 위해 노드를 함께 그룹화할 수 있습니다. 변수 이름의 범위 지정은 이름 범위 기능의 컨텍스트에서도 설명됩니다.

  • 00:40:00 이 섹션에서는 강사가 딥 러닝 연구를 위해 TensorFlow에 변수를 삽입하는 과정에 대해 설명합니다. 특정 범위 내에 변수를 포함하면 TensorFlow Board에서 잘 그룹화된 시각화의 일부가 됩니다. 또한 강사는 t-SNE라는 기술을 사용하여 단어 벡터를 시각화하는 방법을 설명하고 시각화를 위한 TC를 플로팅하는 방법을 제공합니다. 임베딩 매트릭스에서 학습된 고차원 벡터를 취함으로써 t-SNE는 차원을 2D 또는 3D로 축소하여 단어 간의 가장 가까운 이웃 관계를 보여줍니다. 마지막으로 강사는 Word to Work 모델에 사용되는 코드에 대한 개요를 제공합니다.

  • 00:45:00 이 섹션에서 강사는 입력 및 출력에 대한 자리 표시자를 정의하고, NCE 손실에 대한 변수를 구성하고, 임베딩 및 임베딩 매트릭스를 정의하는 프로세스에 대해 설명합니다. 50,000개의 어휘 크기와 128개의 배치 크기를 사용하여 각 단어에 대해 128차원 단어 벡터를 학습하는 임베딩 매트릭스를 정의합니다. 스킵그램에서 추론하는 과정도 설명하고, 설명의 편의를 위해 한 단어씩 집중해서 강의한다. 그런 다음 손실 함수는 TensorFlow API를 사용하여 정의되며 음성 샘플 및 교육 단계 수와 같은 주요 변수에 대한 분석을 제공하는 강의가 있습니다.

  • 00:50:00 이 섹션에서 연사는 NCE(잡음 대조 추정)를 사용하여 softmax의 복잡성을 해결하는 데 도움이 되는 이진 분류 문제를 만드는 방법에 대해 설명합니다. 프록시 분류를 위해 생성된 64개의 부정 예제와 하나의 긍정 예제는 각각 단어 벡터에 해당합니다. TensorFlow 자동 차별화는 이진 분류기의 가중치를 업데이트하여 하나의 긍정적인 예와 64개의 부정적인 예를 구분하는 데 사용됩니다. 강의는 단어 벡터, NCE, 임베딩 행렬 및 주성분 분석(PCA)을 포함하여 지금까지 다룬 개념의 요약으로 끝납니다. 다음 강의는 단어 모델을 구축하면서 다양한 프로그램과 실험을 관리하는 데 중점을 둘 것입니다.
 

딥러닝 연구를 위한 Tensorflow - 강의 5_1



딥러닝 연구를 위한 Tensorflow - 강의 5_1

TensorFlow for Deep Learning Research 시리즈의 다섯 번째 강의에서는 딥러닝 실험을 효과적으로 관리하는 방법, TensorFlow에서 자동 미분의 중요성, 모델 학습 및 변수 저장 프로세스 등 여러 주제를 다룹니다. 연사는 TensorFlow와 같은 딥 러닝 프레임워크에서 자동 미분이 제공되어 사용자가 기울기를 처리하지 않고도 모델을 더 쉽게 코딩할 수 있다고 설명합니다. 그래디언트를 수동으로 계산하는 것이 필수는 아니지만 간단한 함수 및 네트워크에 대해 그래디언트를 계산하는 것은 여전히 유용합니다. 하위 클래스와 필요한 자리 표시자 및 피드 기술을 사용하여 명명된 엔터티 인식 모델 생성, TensorFlow에서 변수 저장 및 복원, 여러 세션 및 시스템에서 모델을 저장하는 프로세스도 다룹니다.

  • 00:00:00 이 섹션에서는 연사가 딥 러닝 실험을 관리하는 방법과 TensorFlow에서 자동 미분의 중요성에 대해 논의합니다. 모델을 작성하다 보면 여러 가지를 시도하고 훈련을 시작하고 다시 시작하게 되므로 적절한 관리가 필수적이라고 설명한다. TensorFlow와 같은 딥 러닝 프레임워크에서 자동 차별화가 제공되어 사용자가 실제 기울기를 처리하지 않고도 모델을 쉽게 코딩할 수 있습니다. 발표자는 TensorFlow의 '그라디언트' 작업을 통해 두 번째 인수로 제공된 목록에서 각 텐서에 대한 Y의 기울기를 찾을 수 있는 예를 제공합니다. 그들은 또한 TensorFlow와 딥 러닝의 모든 것이 수치 미분을 기반으로 한다고 언급합니다.

  • 00:05:00 이 섹션에서 발표자는 TensorFlow에 이미 도트 그래디언트 기능이 있는 경우 그래디언트를 직접 계산하는 방법을 배워야 하는지 여부에 대해 이야기합니다. 그는 이것이 필수적이지는 않지만, 특히 사용자 정의 레이어를 작성하거나 그래디언트 폭발 또는 소실과 같은 그래디언트 문제를 처리할 때 간단한 함수나 네트워크에 대한 그래디언트를 해결하는 것이 여전히 도움이 된다고 제안합니다. 그는 또한 모델을 보다 쉽게 사용하고 기능에서 완전히 벗어나도록 보다 객체 지향적인 방식으로 모델을 구성할 것을 제안합니다. 연사는 딥 러닝 모델의 구성 요소를 캡슐화하는 방법의 예로 CS 244 D 할당 구조를 언급합니다.

  • 00:10:00 이 섹션에서 연사는 딥 러닝 모델 생성의 모델 측면에 대해 논의합니다. 그들은 모델이 전체 추론이 작성되는 곳이라고 설명합니다. 입력을 받고 순방향 패스를 수행하여 출력을 제공한 다음 예측 출력을 자리 표시자의 실제 출력 레이블과 비교하는 손실 스칼라를 생성하는 손실 연산을 추가합니다. 화자는 모든 것을 하나의 기본 클래스로 추상화하고 언어 모델과 같은 특정 유형의 모델에 대한 하위 클래스를 만들 것을 제안합니다. 마지막으로 하위 클래스와 자리 표시자 및 피드 기술과 같은 필요한 API를 사용하여 명명된 엔터티 인식 모델을 만드는 방법을 설명합니다.

  • 00:15:00 이 섹션에서는 TensorFlow를 사용하여 딥 러닝 모델을 교육하는 과정과 실험을 효과적으로 관리하는 방법에 대해 알아봅니다. 이 프로세스에는 포함 매트릭스를 교육하는 루프에서 교육 데이터의 신기원을 실행하기 전에 가변 매트릭스를 만들고 교육 데이터에 대한 포함을 가져오는 작업이 포함됩니다. 진행 상황을 저장하기 위해 train.saver에 대한 TF는 그래프의 변수를 이진 파일로 저장합니다. 이 파일은 향후 실행 중에 호출하여 중지된 위치에서 시작할 수 있습니다. 코드 예제는 saver 개체를 인스턴스화하고 교육 단계를 반복하여 옵티마이저를 실행하여 세션 및 일부 디렉터리 이름을 저장하는 방법을 보여줍니다.

  • 00:20:00 이 섹션에서 발표자는 TensorFlow의 Save 클래스 및 이와 관련된 변수에 대해 자세히 설명합니다. 0부터 시작하는 훈련 불가능한 코드 변수로 정의된 전역 단계 변수는 "최소화" 함수에 제공하여 훈련 작업이 호출될 때마다 증가할 수 있습니다. 또한 "max to keep" 변수는 가장 최근 체크포인트에 저장되는 체크포인트 수를 제한하고 "keep checkpoint every" 변수는 체크포인트 저장 빈도를 제어하므로 긴 훈련 주기에 유용합니다.

  • 00:25:00 이 섹션에서는 강사가 TensorFlow에서 변수를 저장하고 복원하는 방법에 대해 설명합니다. 그는 사용자가 변수 목록이나 사전을 지정하여 모든 것을 저장하는 대신 특정 변수를 저장할 수 있다고 설명합니다. 이것의 이점은 특히 전이 학습을 수행할 때 공간을 절약하고 처리량을 증가시키는 것입니다. 변수를 복원하기 위해 사용자는 tf.latest_checkpoint 함수를 호출할 수 있습니다. 이 함수는 특정 디렉터리에서 최신 체크포인트를 확인하고 session.restore() 함수를 사용하여 거기에서 복원합니다. 강사는 또한 사용자가 변수에 해당하는 키와 값으로 컬렉션을 만든 다음 모든 기본값으로 saver 개체를 인스턴스화하여 TensorFlow 0.11 이상에서 그래프를 저장할 수 있다고 언급합니다.

  • 00:30:00 강의의 이 섹션에서 강사는 서로 다른 세션과 심지어 서로 다른 머신에 걸쳐 TensorFlow 모델을 저장하고 복원하는 방법을 설명합니다. 이 단계에는 전역 변수 초기화 실행, 세션 저장, 저장된 그래프 파일 생성을 위한 "메타 그래프 내보내기" 방법 활용이 포함됩니다. 이 저장된 그래프는 복원할 수 있으며 원본 그래프를 사용할 수 없는 경우 완전히 다른 프로세스나 시스템에서 변수를 다시 초기화할 수 있습니다. 강사는 다음 비디오에서 다룰 TF.summary도 언급합니다.
 

딥러닝 연구를 위한 Tensorflow - 강의 5_2



딥러닝 연구를 위한 Tensorflow - 강의 5_2

비디오 자습서에서는 TensorBoard에서 데이터를 시각화할 수 있는 TF 요약 작업의 구현에 대해 설명합니다. 튜토리얼은 TF.summary.scalar, TF.summary.histogram 및 TF.summary.image의 세 가지 유형의 요약 작업을 다루고 FileWriter 클래스를 사용하여 이를 하나로 병합하고 이벤트 파일에 쓰는 방법을 설명합니다. 강사는 이름 범위를 사용하여 TensorBoard에서 그래프를 시각화하는 방법을 보여주고 테스트 작성기와 훈련된 작성기를 정의하여 별도의 파일에 요약을 작성합니다. 모델의 성능을 더 잘 이해하기 위해 TensorBoard의 시각화 기능을 활용하는 것을 강조합니다. 전반적으로 TensorBoard는 교육 진행 상황을 추적하는 데 중요한 도구이며 작업을 추가하고 병합하는 API는 간단합니다.

  • 00:00:00 이 섹션에서 비디오 자습서는 TensorBoard에서 시각화를 위한 요약 데이터를 생성하기 위해 계산 그래프의 노드에 정보를 첨부하는 기능인 TF 요약 작업을 사용하는 방법에 대해 설명합니다. 이 튜토리얼에서는 세 가지 유형의 요약 작업을 다룹니다. 특정 레이어의 가중치와 같은 텐서 분포를 시각화하기 위한 TF.summary.histogram 및 TF.summary.image는 이미지, 입력 또는 일부 중간 레이어를 시각화하기 위한 것입니다. 이 자습서에서는 모든 요약 작업을 하나로 병합하고 FileWriter 클래스를 사용하여 이벤트 파일에 기록하는 방법을 설명합니다.

  • 00:05:00 이 섹션에서는 발표자가 TensorBoard에서 데이터를 시각화하기 위해 TensorFlow에서 파일 작성기 및 요약을 설정하는 방법을 설명합니다. 모든 단계에서 실행하면 너무 많은 데이터가 생성될 수 있으므로 특정 간격으로 실행되도록 작성기를 설정하는 것이 좋습니다. 파일 작성자에게 그래프 개체를 제공함으로써 계산 그래프를 그래프 def로 저장하고 TensorBoard에서 시각화할 수 있습니다. 발표자는 x축에서 특정 단계를 선택하여 y축에서 해당 값을 확인함으로써 TensorBoard에서 스칼라 및 히스토그램을 시각화하는 방법을 보여줍니다. 사용자가 TensorBoard의 시각화 기능을 활용하여 모델의 성능을 더 잘 이해하도록 권장합니다.

  • 00:10:00 이 섹션에서 강사는 텐서를 사용하고 요약 노드를 추가하는 variable_summary라는 함수 정의에 대해 설명합니다. 이 기능은 평균, 표준 편차, 최대값, 최소값 및 히스토그램을 다룹니다. 각 변수는 이름 지정 관점에서 범위가 지정됩니다. 그들은 또한 모델이 충분히 훈련되지 않았을 때 손실이 가장 높고 단계 크기가 증가함에 따라 손실이 감소하는 분포의 무질서에 대한 아이디어를 논의합니다. 다양한 실험에 다른 파일 작성기를 사용할 수 있으며 로그 기어에 저장할 수 있습니다. 조밀한 거처 옵션을 사용하면 다른 선택 항목 내에서 선택하고 토글할 수 있습니다.

  • 00:15:00 이 섹션에서 비디오는 시각화를 위해 요약 작업을 구현하고 TensorFlow에서 이름 범위를 사용하는 데 중점을 둡니다. 이 코드는 TensorBoard에서 그래프를 시각화하는 데 도움이 되는 교차 엔트로피 및 정확도에 대한 이름 범위를 정의합니다. 병합된 op는 TF.summary.merge_all을 호출하여 얻어지며 이 op는 세션을 실행할 때 사용됩니다. 이 코드는 또한 결과 요약을 별도의 파일에 작성하기 위한 테스트 작성기와 훈련된 작성기를 정의합니다. 각 단계에서 코드는 모델을 훈련하고 요약을 작성합니다. 단계 mod 10의 수가 0이면 요약이 테스트 작성자에게 작성되고 다른 모든 단계의 경우 훈련된 작성자에게 작성됩니다.

  • 00:20:00 이 섹션에서 발표자는 TensorBoard를 실행하여 테스트 작성자와 학습 작성자 모두에서 동시에 이벤트를 시각화하는 방법에 대해 설명합니다. "s about - - clock there is equal to the path" 명령은 모든 것을 시각화하는 데 도움이 되며 현재 호스트는 브라우저를 통해 탐색할 수 있는 localhost colon six zero zero six입니다. 또한 TF 도트 요약 도트 이미지에는 기본적으로 텐서 최대 출력이라는 이름이 있으며 모양 경로 크기 높이 너비 및 채널로 4차원 텐서를 해석합니다. 최대 출력 인수는 TensorBoard에서 렌더링되고 표시될 오프셋 백 이미지의 수를 결정합니다. 전반적으로 TensorBoard는 교육 진행 상황을 추적하는 데 중요한 도구이며 다양한 작업을 추가하고 병합하는 API는 간단합니다.
 

계산 그래프로서의 역전파 이면의 직관



계산 그래프로서의 역전파 이면의 직관

계산 그래프로서의 역전파 이면에 있는 직관은 이 비디오에서 설명합니다. 발표자는 대리 함수가 입력을 출력에 매핑하는 경험적 함수를 추정하는 데 사용되는 방법과 목표는 손실 함수를 최소화하는 매개변수를 찾는 것이라고 설명합니다. 역전파를 사용하면 그래프의 역방향 통과를 통해 각 매개변수에 대한 손실 함수의 기울기를 계산할 수 있습니다. 그래프의 각 게이트에 대한 로컬 기울기가 계산되며 각 입력에 대한 최종 출력의 기울기를 계산하는 데 사용할 수 있습니다. 연사는 또한 분기 및 벡터화 작업을 위한 그래디언트를 처리하는 방법과 도함수를 계산할 때 차원이 제대로 작동하는지 확인하는 방법을 설명합니다.

  • 00:00:00 이 섹션에서는 역전파를 통해 신경망 훈련이 빠르게 수렴할 수 있으며 이를 심층적으로 이해하면 연구자에게 도움이 될 수 있습니다. 강의는 신경망의 목표가 F(x)로 표시되는 입력을 출력에 매핑하는 함수를 찾는 것이라고 설명하면서 시작합니다. 이 함수는 발견할 수 없는 경험적 함수입니다. 강의에서는 대리 함수 G(x,θ)를 사용하여 F를 추정하는 방법에 대해 설명합니다. 여기서 θ는 신경망 매개변수를 나타내며 목표는 손실 함수 J를 최소화하는 매개변수를 찾는 것입니다. 그런 다음 강의에서는 역전파 기법을 설명합니다. 네트워크는 그래프의 역방향 통과를 통해 각 매개변수에 대한 손실 함수의 기울기를 계산하여 최적의 매개변수를 찾을 수 있습니다.

  • 00:05:00 이 섹션에서 연사는 신경망 훈련에 중요한 세타와 관련하여 G의 도함수를 찾는 방법에 대해 논의합니다. 사용된 예는 X, Y 및 Z의 단순 함수이며, 여기서 X, Y 및 Z에 대한 F의 편도함수를 계산해야 합니다. 주어진 작업에 대한 입력에 대한 출력의 도함수인 로컬 그래디언트의 개념이 도입되었습니다. 그러나 먼 변수(이 경우 X, Y 및 Z)에 대한 최종 출력을 계산하려면 체인 규칙이 필요합니다.

  • 00:10:00 이 섹션에서는 기울기의 역방향 흐름을 사용하여 계산 그래프에서 기울기를 찾는 방법을 살펴봅니다. 출력 노드의 그래디언트는 사소하게 1이며, 각 노드에서 그래디언트를 계산하기 위해 로컬 그래디언트에 이전 노드에서 받은 그래디언트를 곱합니다. 그런 다음 프로그램은 Del X에 의한 del F, Del Y에 의한 del F, Del V에 의한 del F의 최종 그래디언트를 계산할 수 있습니다. 항상 최종 손실 함수와 관련하여 그래디언트를 계산한다는 점을 명심하는 것이 중요합니다. 신경망의 경우 J 손실 함수입니다. 마지막으로, 신경망의 뉴런이 정방향 전달 동안 간단한 기능을 수행하는 방법과 역전파 동안 로컬에서 그래디언트를 계산하고 사용하는 방법을 배웁니다.

  • 00:15:00 이 섹션에서 화자는 뉴런에 대한 계산 그래프로서의 역전파 이면에 있는 직감을 설명합니다. 로컬 그래디언트는 역방향 함수에 del Z에 Del X를 곱하고 del Z에 Del Y 값을 곱하여 얻습니다. 역방향 흐름은 뉴런의 출력 방향으로 진행되며 데이터를 전송하는 다른 뉴런은 Del X에 의해 Del J를 얻습니다. 계산 그래프 기술은 또한 역방향 그래디언트가 있는 시그모이드 함수와 같은 보다 복잡한 함수에 사용됩니다. 수치로 계산됩니다. 각 노드의 로컬 기울기는 함수의 도함수를 취한 다음 기울기 흐름을 곱하여 계산됩니다.

  • 00:20:00 이 섹션에서 발표자는 계산 그래프에서 각 게이트의 로컬 그래디언트를 계산하는 방법과 각 입력에 대한 최종 출력의 그래디언트를 얻는 데 사용할 수 있는 방법을 설명합니다. 비디오에 사용된 예제는 더하기 및 곱하기 게이트와 같은 여러 게이트로 구성된 작은 계산 그래프를 포함하며 화자는 이 예제를 사용하여 역전파 알고리즘의 이면에 있는 직관을 설명합니다. 발표자는 그래프의 각 게이트에 대한 로컬 그래디언트를 계산하는 방법을 자세히 설명하고 각 입력에 대한 최종 출력의 그래디언트를 계산하기 위해 결합하는 방법을 보여줍니다.

  • 00:25:00 이 섹션에서 발표자는 계산 그래프로서의 역전파 이면의 직관에 대해 논의합니다. 추가 게이트 및 곱셈 게이트와 같은 다양한 유형의 게이트에 대한 기울기가 계산되는 방법과 역류를 계산할 때 나타나는 패턴에 대해 설명합니다. 발표자는 또한 각 게이트에 대해 순방향 및 역방향 함수를 정의하는 방법을 설명하고, 일단 정의되면 이러한 함수를 모든 계산 그래프에 사용할 수 있으므로 프로세스를 보다 효율적으로 만듭니다.

  • 00:30:00 이 섹션에서는 역전파에서 정방향 및 역방향 패스의 개념을 계산 그래프로 설명합니다. 순방향 패스는 손실에 도달할 때까지 다음 노드의 입력이 되는 출력을 계산합니다. 역방향 패스에서는 DZ를 초기에 1로 설정하고 역방향으로 계산합니다. 벡터를 다룰 때 Jacobian 행렬을 사용하여 로컬 그래디언트를 취하고 체인 규칙에서 왼쪽 곱셈을 사용합니다. Del X에 의한 Del L 또는 Del Y에 의한 Del L은 두 야코비 행렬(Del X에 의한 del Z 또는 Del Y에 의한 del Z 및 Del V에 의한 del L)을 사용하여 계산됩니다.

  • 00:35:00 이 섹션에서 발표자는 계산 그래프를 사용하여 주어진 함수의 정방향 통과 및 역전파를 계산하는 방법을 설명합니다. 예제 함수를 사용하여 화자는 중간 변수를 만들고 순방향 패스를 계산하는 과정을 안내합니다. 그런 다음 스피커는 각 게이트의 입력 및 출력에 대한 그래디언트를 계산하여 역방향 패스를 계산하는 방법을 보여줍니다. 화자는 시그모이드 함수의 도함수를 염두에 두는 것이 유용함을 강조합니다.

  • 00:40:00 이 섹션에서 연사는 역전파에서 분기 및 벡터화된 작업에 대한 그래디언트를 처리하는 방법을 설명합니다. 분기가 발생하면 그래디언트가 추가되고 함수에 대한 그래디언트를 계산할 때 이전 중간 그래디언트를 재사용할 수 있습니다. 행렬 곱셈과 같은 벡터화된 연산은 각 요소에 대한 그래디언트를 개별적으로 계산하고 행렬 연산을 사용하여 결합하여 유사하게 처리할 수 있습니다. 그래디언트의 차원은 수행 중인 작업 출력의 차원에 따라 결정됩니다.

  • 00:45:00 이 섹션에서 발표자는 TensorFlow의 행렬 곱셈 예를 사용하여 함수에서 del D/del W 및 del D/del X를 계산할 때 차원이 작동하는지 확인하는 방법을 설명합니다. W와 DD의 치수는 알고 있고, 곱셈을 하는 유일한 방법은 W dot dot do X를 사용하는 것이므로 이 공식을 외워두는 것이 좋습니다. 발표자는 시청자에게 TensorFlow와 같은 프레임워크가 이러한 복잡성을 추상화하더라도 TensorFlow의 컴퓨팅 그래프 작업을 이해하는 것이 중요함을 상기시킵니다. 이 지식은 사용자가 정방향 및 역방향 패스를 작성해야 하는 사용자 지정 레이어를 처리할 때 유용합니다.
 

컴퓨터 비전을 위한 딥 러닝 생산화



컴퓨터 비전을 위한 딥 러닝 생산화

Jumio의 CTO이자 수석 과학자인 Lavash Patel은 회사에서 AI와 ID 전문가를 혼합하여 온라인에서 신뢰를 구축하고 ID 문서의 진위를 확인하는 방법에 대해 설명합니다. 다양한 ID와 하위 유형, 읽을 수 없는 이미지의 정정 및 거부 필요성으로 인해 신원 확인 프로세스가 까다롭습니다. 정확도를 유지하기 위해 AI 모델이 문제를 감지하고 사람이 결과에 대해 온전한 검사를 수행하는 인간 참여형 접근 방식이 사용됩니다. Patel은 또한 Jumio가 하이브리드 능동 학습 알고리즘을 사용하여 딥 러닝을 생산화하는 방법에 대해 설명합니다. 이 알고리즘은 새로운 하위 유형에 적응하고 자체 재교육을 통해 개선됩니다. 또한 그는 기계 학습 목적으로 민감한 데이터를 다룰 때 얼굴 인식 및 PCI 규정 준수 유지에서 클린 데이터의 중요성을 강조합니다.

  • 00:00:00 이 섹션에서는 Jumio의 CTO이자 수석 과학자인 Lavash Patel이 ID 문서의 진위를 확인하기 위해 AI와 ID 전문가의 조합을 통해 온라인에서 신뢰를 구축하는 회사의 사업에 대해 설명합니다. 이러한 종류의 확인 프로세스의 문제는 휴대폰, 웹캠 및 간단한 API 호출을 포함한 모든 종류의 채널에서 트래픽을 허용한다는 사실로 인해 어려워집니다. 이러한 문제를 해결하기 위해 Jumio는 분류 및 Facemash 모델을 혼합하여 신분증의 진위 여부와 카메라 앞에 있는 사람의 신원을 확인하는 데 도움을 줍니다.

  • 00:05:00 이 섹션에서 발표자는 존재하는 다양한 ID 및 하위 유형을 고려할 때 신원 확인에 AI를 사용하는 문제에 대해 논의합니다. 수정 또는 이미지 정렬의 중요성과 흐릿함 또는 눈부심으로 인해 읽을 수 없는 이미지를 거부할 필요성이 강조됩니다. 모든 구성 요소가 유효한 것으로 간주되려면 통과해야 하므로 ID 이미지 승인은 거부보다 더 엄격한 프로세스입니다. 사기성 사용자에 대한 엄격한 정확성과 거부를 유지하기 위해 AI 모델을 사용하여 문제를 감지하고 사람이 결과에 대한 온전성 검사를 수행하는 휴먼 인 더 루프(Human-in-the-Loop) 접근 방식을 취합니다. 이 접근 방식은 전환 및 사기 탐지 측면에서 업계 최고의 정확도를 제공합니다.

  • 00:10:00 이 섹션에서 발표자는 컴퓨터 비전을 위한 딥 러닝 생산의 분류 측면에 대해 논의합니다. 이미지 분류는 Inception Version 4 또는 Viji 16과 같은 사전 훈련된 네트워크를 사용하여 지난 몇 년 동안 해결되었지만 세분화된 태그 대신 집계 태그로 인해 문제가 약간 다릅니다. 1억 개 이상의 태그가 지정된 이미지를 통해 다양한 클래스를 발견하는 것이 능동 학습으로 해결할 수 있는 모핑된 클래스 발견 문제가 되었습니다. 하이브리드 능동 학습에는 비지도 학습 또는 클러스터링 내장 단계가 포함되며, 레이블이 지정된 예제가 있는 가장 인기 있는 클래스부터 시작하여 소수의 클래스를 얻습니다.

  • 00:15:00 이 섹션에서는 발표자가 하이브리드 능동 학습 알고리즘을 사용하여 컴퓨터 비전을 위한 딥 러닝을 생산화하는 방법을 설명합니다. 이 알고리즘은 클래스당 많은 수의 샘플을 수집하고 출력 신뢰 수준을 사용하여 이미지를 자신 있게 50개의 클래스로 분류하도록 분류기를 훈련합니다. 그런 다음 알고리즘은 분류자가 확신하지 못하는 이미지를 자동으로 클러스터링하고 필요에 따라 인간 에이전트가 이를 검토하여 새 클래스를 추가합니다. 모델이 생성되면 API로 배포되며, 컴플라이언스 규정이 있는 경우 로깅, 모니터링, 헬스 체크 등이 추가될 수 있습니다. 또한 화자는 맞춤법이 잘못된 새 ID가 감지되고 인간 에이전트가 거부했을 때처럼 알고리즘이 새로운 하위 유형에 적응하고 스스로 재교육을 통해 계속 개선된다고 언급합니다.

  • 00:20:00 이 섹션에서 발표자는 항상 챔피언 모델을 유지하고 챔피언과 비교한 성능을 기반으로 새 모델을 평가하여 새 모델을 생산하는 방법에 대해 논의합니다. 이 방법은 또한 데이터 세트를 지속적으로 수집하고 정리하는 하이브리드 활성 학습 인프라를 사용하여 지속적인 개선을 가능하게 합니다. 프로덕션 파이프라인은 데이터 세트의 청결도에 민감하며 교육의 목표 오류율은 20%를 넘지 않습니다. 또한 전체 프로세스는 PCI 및 GDP를 준수해야 합니다. 즉, 모든 것을 암호화하여 데이터를 교육으로 가져오는 대신 데이터로 가져와야 합니다. 그런 다음 연사는 얼굴 일치에 대한 두 번째 사례 연구를 제시합니다. 여기에서 그들은 셀카를 ID에 일치시키는 데 유리하도록 연령, 성별 및 민족에 대한 데이터 편향을 사용합니다.

  • 00:25:00 이 섹션에서 연사는 심층 컨볼루션 네트워크에서 얼굴 임베딩 및 삼중항 손실 기능을 사용하여 사기성 사용자를 감지하는 문제를 해결하는 가능한 접근 방식에 대해 논의합니다. 이 프로세스에는 얼굴 감지기를 사용하여 얼굴을 자르고 공개 데이터 세트를 사용하여 모델을 훈련한 다음 생산 데이터를 미세 조정하는 작업이 포함됩니다. 이 모델은 감독 인프라를 사용하여 유용한 샘플을 수집하고 지속적으로 데이터를 보강하는 능동 학습 프로세스를 통해 미세 조정됩니다. 발표자는 광범위한 사용 사례에서 능동적 학습의 효과를 강조합니다.

  • 00:30:00 이 섹션에서 발표자는 컴퓨터 비전, 특히 얼굴 인식에서 클린 데이터의 중요성을 강조합니다. 그는 딥 러닝 생산에는 단순한 모델링 이상의 것이 포함되며 분류와 같은 단순한 문제도 생산 단계에서 수많은 복잡성을 갖게 될 수 있다고 강조합니다. 협업 인텔리전스 또는 인간 참여형 워크플로는 알고리즘 개선에 도움이 될 수 있으며 깨끗한 데이터 세트가 필요하기 때문에 얼굴 인식에서 특히 중요합니다. 연사는 또한 그들의 회사가 비엔나와 몬트리올에 기반을 둔 R&D 팀을 고용하고 있다고 언급했습니다.

  • 00:35:00 이 섹션에서 발표자는 기계 학습 및 AI 목적을 위해 민감한 데이터를 처리할 때 PCI 규정 준수를 유지하는 문제에 대해 논의합니다. 연사는 데이터가 의도된 목적으로만 사용되어야 하며 승인되지 않은 액세스를 방지하기 위해 매우 안전한 위치와 절차가 마련되어 있어야 한다고 설명합니다. 또한 발표자는 PCI DMZ 내의 Amazon S3 버킷에 데이터를 저장하고 기계 학습을 위해 난독화된 이미지를 생성한 후 원격으로 감독하여 개인 데이터가 유출되지 않도록 한다고 설명합니다.
 

Gail Weiss: 트랜스포머처럼 생각하기



Gail Weiss: 트랜스포머처럼 생각하기

Gail Weiss는 이 비디오에서 변환기 인코더의 개념에 대해 논의하고 시퀀스를 처리하고 벡터로 인코딩하는 기능을 설명합니다. Weiss는 변압기 인코더의 강점과 한계를 탐구하는 여러 연구를 강조하고 변압기 인코더 기능을 나타내는 제한된 액세스 시퀀스 처리 언어(RASP)라는 프로그래밍 언어를 소개합니다. 또한 시퀀스 연산자와 라이브러리 함수를 사용하여 반전 및 플립 선택기를 계산하는 방법에 대해 자세히 알아보기 전에 특정 조건에서 multi-headed 어텐션, 선택 패턴 및 softmax 문제에 대해 논의합니다. Weiss는 변환기를 위한 최적의 프로그램 생성에 대한 통찰력과 Universal 및 Sandwich Transformers의 통찰력을 제공하며 궁극적으로 선택 술어 및 이진 대 3차 관계에 대해 논의합니다.

그는 또한 트랜스포머 모델에서 고차 어텐션을 사용하는 것의 잠재적인 이점과 단점뿐만 아니라 레이어 전체에서 정보를 유지 관리하는 잔여 연결의 중요성에 대해서도 이야기합니다. 그녀는 또한 RASP 모델에서 벗어난 매우 깊은 변환기의 잠재적인 문제에 대해 논의하고 정보의 모호함을 극복하기 위해 더 긴 임베딩을 사용할 것을 제안합니다.

  • 00:00:00 비디오의 이 섹션에서 Gail Weiss는 시퀀스를 처리하도록 설계된 신경망의 일부인 변환기 인코더의 개념을 소개합니다. 그녀는 변환기 인코더가 주어진 시퀀스를 가져와서 BERT를 비롯한 몇 가지 인기 있는 예와 함께 일련의 벡터로 인코딩한다고 설명합니다. 그런 다음 Weiss는 공식 언어를 인식하고 계산을 수행하는 기능을 포함하여 변압기 인코더의 강점과 한계를 탐구한 여러 연구를 강조합니다. 이러한 연구가 트랜스포머 엔코더의 기능에 대한 통찰력을 제공하지만 Weiss는 트랜스포머가 실제로 작업을 처리하는 방법에 대한 명확한 직관을 제공하지 않는다고 지적합니다.

  • 00:05:00 이 섹션에서 Gail Weiss는 순환 신경망(RNN)이 입력 벡터를 기반으로 상태 간 전환을 정의하는 유한 상태 기계와 유사하며 어떤 상태에 도달했는지에 따라 최종 분류를 출력한다고 설명합니다. 결정론적 유한 오토마타에 대한 우리의 이해를 사용하여 표현력을 분석함으로써 RNN으로 무엇을 해야 하는지에 대한 통찰력을 얻고 RNN을 가중 유한 오토마타, 결정론적 유한 오토마타 또는 가중 결정론적 유한 오토마타로 변환할 수 있습니다. 그러나 이러한 직관은 Transformers에는 존재하지 않으며 Transformer 인코더에 대해 유사한 목적을 제공하는 모델을 제시할 필요가 있습니다. RNN과 달리 Transformer 인코더는 전체 입력을 한 번에 가져오고 고정된 횟수만큼 처리를 적용하는 딥 네트워크를 통해 모든 입력 토큰을 병렬로 처리합니다. Transformers에는 상태가 없지만 일련의 작업을 통해 정보를 처리하고 전파한다는 의미가 있습니다.

  • 00:10:00 이 섹션에서 Gail Weiss는 S-ops(Sequence Operators) 생성을 설명하는 제한된 액세스 시퀀스 처리 언어(RASP)라는 프로그래밍 언어로 변환기 인코더를 표현하는 방법을 설명합니다. S-ops는 시퀀스에 작업을 적용하여 더 많은 처리 정보를 생성하는 변환기 인코더의 레이어를 나타냅니다. RASP는 모든 입력 시퀀스에서 새로운 문자 시퀀스와 인덱스를 생성하는 두 개의 상수 토큰과 인덱스를 제공한 다음 트랜스포머 인코더 레이어의 입력으로 들어오는 각 벡터에 요소별 피드포워드 네트워크를 적용합니다. 프로그래머는 요소별 연산이 될 수 있으므로 적용된 연산의 논리적 또는 합리적인 계산을 담당합니다.

  • 00:15:00 비디오의 이 섹션에서 Gail Weiss는 요소별이 아닌 트랜스포머 인코더 레이어의 일부인 multi-headed Attention의 개념을 소개합니다. 그녀는 싱글 헤드 어텐션과 벡터 시퀀스에 두 개의 선형 변환을 적용하여 쿼리 세트와 키 세트를 생성하여 어떻게 작동하는지 설명하는 것으로 시작합니다. 키는 제공해야 하는 정보를 설명하고 쿼리는 각 위치에서 원하는 정보를 설명합니다. 쿼리와 각 키의 스칼라 곱을 통해 가중치를 정규화하고 각 위치의 출력을 얻습니다. Weiss는 또한 모델이 더 많은 매개변수를 가질 수 있도록 하는 키와 값의 중간 변환에 관한 질문을 명확히 합니다.

  • 00:20:00 이 섹션에서 발표자는 multi-headed self-attention과 이를 사용하여 여러 작업을 단일 레이어로 압축하는 방법에 대해 설명합니다. 이 프로세스에는 입력 벡터를 동일한 길이의 벡터로 분할하고 각 블록을 다른 헤드로 전달하는 작업이 포함됩니다. 여러 개의 헤드가 적용되면 연결되어 multi-headed self-attention의 출력을 형성합니다. 서로 다른 헤드 사이에 종속성은 없지만 여러 개의 서로 다른 헤드가 있기 때문에 단일 레이어가 여러 작업을 수행할 수 있습니다. 이 프로세스를 통해 프로그래머는 컴파일러의 문제인 multi-headed self-attention 대신 어텐션 헤드에 대해 걱정할 수 있습니다.

  • 00:25:00 이 섹션에서 Gail Weiss는 변환기에 대한 특정 선택 패턴을 인코딩하는 방법의 예를 제공합니다. 0, 1 또는 2로 자신을 설명하는지 여부에 따라 위치를 선택하는 예를 사용하여 Weiss는 첫 번째 위치는 마지막 두 위치를 선택하고 두 번째 위치는 아무 것도 선택하지 않으며 세 번째 위치는 첫 번째 위치만 선택한다고 나타냅니다. Weiss는 또한 크거나 같음, 작거나 같음 또는 같지 않음과 같은 다양한 유형의 비교가 선택될 수 있으며 선택자가 함께 구성될 수 있다고 설명합니다. 그러나 Weiss는 변환기에 대한 선택 패턴의 추상화는 수행 중인 작업의 합리성에 따라 달라지며 이는 프로그래머가 확인해야 한다는 점에 주목합니다.

  • 00:30:00 이 섹션에서 연사는 특정 조건에서 softmax를 사용할 때의 문제, 즉 선택 기준을 충족하지 않는 나머지 위치에 약간의 초점이 있다는 점에 대해 논의합니다. 이 문제를 해결하기 위해 화자는 이러한 임베딩의 크기가 증가하면 softmax가 "작거나 같음" 및 "위" 위치의 하드 선택을 근사화하기 시작할 것이라고 제안합니다. 그런 다음 프레젠테이션은 집계 개념과 평균을 사용하여 토큰을 선택하고 가중치를 부여하는 방법으로 이동합니다. 발표자는 토큰 반전의 예와 "olleh"를 출력하는 단어 "hello"의 예를 사용하여 반전 선택기를 만들고 토큰을 집계하여 반전된 입력 시퀀스를 얻는 방법을 제공합니다.

  • 00:35:00 이 섹션에서 발표자는 길이 연산자가 입력의 일부가 아닌 경우에도 변압기에서 어떻게 사용될 수 있는지, 그리고 선택 결정이 쌍을 이루어 임의의 전력을 숨길 수 있는 임의로 강력한 선택 작업을 방지하는 방법에 대해 설명합니다. 발표자는 임베딩 값을 다시 추가하는 건너뛰기 또는 잔류 연결과 같은 다른 변압기 구성 요소와 RASP 모델에 없는 레이어 규범에 대해서도 이야기합니다. 또한 화자는 코드 반복을 피하기 위해 편의를 위해 함수 및 구성 선택기를 사용한다고 언급합니다.

  • 00:40:00 이 섹션에서 발표자는 val, min 및 max와 같은 시퀀스 연산자를 사용하여 어떤 인덱스가 특정 범위 내에 있는지 확인하는 방법에 대해 설명합니다. 또한 내부 히스토그램 및 입력 시퀀스에서 토큰 계산과 같은 기능을 구현하는 데 선택기 너비와 같은 라이브러리 기능의 유용성을 언급합니다. 또한 발표자는 선택기와 표시기 기능을 사용하여 시퀀스의 길이를 계산하는 방법을 설명하면서 계층 정규화가 이러한 계산을 복잡하게 만들 수 있다고 지적합니다. 마지막으로 그들은 역을 계산하기 위해 피드백 네트워크를 포함하는 대안 솔루션을 제안하지만 여전히 계층 정규화의 영향을 받을 수 있음을 인정합니다.

  • 00:45:00 이 섹션에서 Gail Weiss는 상대적으로 짧은 시퀀스를 처리할 때에도 트랜스포머가 반전 및 플립 셀렉터를 계산하는 방법을 배울 수 있는 방법에 대해 설명합니다. 그녀는 또한 Ras 프로그램 분석을 사용하여 컴퓨팅 리버스를 적용할 시기와 플립 선택기를 적용할 시기를 결정하는 동시에 선택 및 집계 쌍이 주의 헤드가 되도록 할 수 있다고 설명합니다. 마지막으로, 그녀는 실제 변환기가 두 계층에서 역방향 계산을 수행할 수 있는 방법을 탐구합니다. 이는 변환기가 20 에포크 후 최대 100 길이의 입력 시퀀스를 반전할 때 99.6%의 정확도를 달성했다는 결과로 뒷받침됩니다.

  • 00:50:00 이 섹션에서 Gail Weiss는 작업을 효과적으로 수행하기 위해 두 개의 레이어가 필요한 변압기를 위한 최적의 프로그램 생성에 대해 설명합니다. 프로그램을 한 계층으로 축소하고 매개변수를 두 번 추가하거나 두 개의 헤드를 사용하더라도 변화하는 시퀀스 길이를 처리하는 방법을 모르기 때문에 높은 정확도를 얻을 수 없습니다. 또한 어텐션 패턴은 두 레이어에서 동일합니다. 첫 번째 레이어는 시퀀스 길이를 계산하기 위해 균일한 어텐션을 사용하고 두 번째 레이어는 동일한 역 어텐션 패턴을 사용합니다. 더 나아가 Weiss는 토큰을 선택하고 토큰이 입력 시퀀스에 나타나는 횟수를 출력하는 인플레이스 히스토그램을 보여줍니다. 각 토큰을 자체와 동일한 토큰 또는 시퀀스 토큰의 시작 부분에 있는 첫 번째 위치에 집중함으로써 변환기를 훈련하는 데 하나의 어텐션 헤드만 사용하므로 역 및 기타 요소를 훨씬 쉽게 계산할 수 있습니다.

  • 00:55:00 이 섹션에서는 Gail Weiss가 Universal Transformer와 Sandwich Transformer에서 나오는 통찰력에 대해 이야기합니다. 둘 다 변압기 모델에 대해 생각하고 활용하는 방식에 영향을 미칩니다. 그녀는 RASP의 모든 시퀀스 연산자가 유한한 수의 작업의 결과이므로 언어가 무한히 강력하지는 않지만 유한한 수의 O(n^2) 계산이라고 설명합니다. 그녀는 또한 변환기 인코더에서 어텐션 헤드의 계산 비용과 n^2 계산을 활용할 가치가 없는 방법에 대해 설명합니다. 그런 다음 대화는 선택 술어 및 이진 대 순서 3 관계에 대한 토론으로 이동합니다.

  • 01:00:00 이 섹션에서 Gail Weiss는 2차 대신 3차와 같이 더 높은 차수 주의를 가진 변압기 모델의 전력 증가 가능성에 대해 논의합니다. 그녀는 그러한 모델이 잠재적으로 O(n^2) 연산보다 큰 함수를 계산하여 성능을 높일 수 있다고 설명합니다. 그러나 이것은 또한 계산적으로 더 비쌉니다. Weiss는 또한 계층 전체에서 정보를 유지하고 재사용하는 방법으로 변환기 모델에서 잔류 연결의 중요성을 강조하고, 이를 제거하면 별개의 작업으로 나타나지 않더라도 성능이 크게 저하될 수 있다고 제안합니다.

  • 01:05:00 비디오의 이 섹션에서 Gail Weiss는 매우 깊은 변압기에서 발생할 수 있는 잠재적인 문제와 RASP 모델에서 벗어날 수 있는 방법에 대해 논의합니다. 그녀는 정보를 빨리 잃게 만들 수 있는 변압기에서 특정 정보를 제거하는 것의 중요성에 대해 ICML에서 읽은 논문을 언급합니다. 그러나 그녀는 정보가 중요하다고 인식되는 경우 정보를 보관할 수 있다고 언급합니다. Weiss는 또한 변환기가 더 깊어짐에 따라 정보의 모호성 문제를 극복하기 위해 매우 긴 임베딩을 갖는 아이디어에 대해 논의합니다.