이 비디오에서 우리는 여러 차원에서 다중 선형 회귀 및 PyTorch를 사용하여 이러한 모델을 구축하는 방법을 검토합니다.
선형은 아마도 PyTorch에서 가장 자주 사용되는 기능이며 신경망을 구축하는 데 핵심입니다.
이 비디오에서 우리는 검토 할 것입니다: 다중 차원의 선형 회귀
PyTorch와 관련하여 예측의 문제는 클래스 선형 및 NN.Modules를 사용하여 사용자 정의 모듈을 빌드하는 방법을 검토합니다. 계수 또는 무게
__2_ 등: 계수 또는 무게 __1_ W2: 우리는 바이어스, w1: 다중 선형 회귀에서 우리는 여러 예측 변수를 가지고, 이 예에서 우리는 다음 4 예측 변수를 가지고있다.
일반적으로 무게와 편향은 훈련을 통해 얻은 모델의 매개 변수입니다.
표에는 예측 변수 __1_ 및 __2_의 여러 표본이 포함되어 있습니다.
각 점의 위치는 2D 평면에 배치되고 그에 따라 색상이 코드화됩니다.
예측 변수 __1_ 및 __2_의 각 샘플은 새 값 __에 매핑됩니다.
__ (y-hat) 의 새 값은 y hat가 취하는 값에 비례하여 세로 방향으로 매핑됩니다.
우리는 선형 변환으로 연산을 표현할 수, X는 D 텐서 또는 벡터에 의해
1이며, 때로는 기능이라고하며, w 파라미터의 1 텐서 또는 벡터에 의해
D이다 y 모자 종속 변수입니다. 내적을 사용하여 우리는 벡터 연산의 관점에서 방정식을 표현할 수 있습니다.
치우침이 1과 같은 다음 예를 고려하십시오. 우리는 x와 w의 내적을 수행합니다.
x와 w의 첫 번째 구성 요소를 곱합니다. w와 x의 두
번째 구성 요소의 곱을 추가합니다.
가장 중요한 속성은 모양입니다. x의 열 수,
w의 행 수와 동일해야합니다, 우리는 다음 추가 b
우리는 내적 연산을 수행 한 다음 b를 추가, 결과는 y-hat입니다.
우리는 모양과 매개 변수 사이의 관계를 이해하는 데 도움이 색상 표현을 사용합니다.
다음 방향 그래프는 내적을 이해하는 데 도움이됩니다.
노드는 피쳐를 나타내고 모서리는 매개변수를 나타냅니다.
이 그래프는 나중에 신경망을 이해하는 데 도움이 될 것입니다. 이 경우 우리는 2 차원이 있습니다.
우리는 그것을 D 임의의 차원으로 확장 할 수 있습니다.
우리는 텐서 또는 벡터의 여러 샘플에 선형 회귀를 수행 할 수 있습니다. 이 경우 4 개의 샘플이 있으며 각 샘플에는 4 개의 열이 있습니다.
이것은 4 샘플과 기차 로더 객체의 출력입니다
우리는 첫 번째 샘플은 행렬의 첫 번째 행에 대응하는 대문자 X로 표현 텐서 또는 행렬이.
두 번째 샘플은 행렬의 두 번째 행에 해당합니다.
우리는 다른 샘플을 표현하기 위해 색상을 사용할 수 있습니다.
여러 표본의 경우 회귀 방정식은 선형 변환입니다.
y와 b는 벡터 또는 행 텐서이며 각 표본에 대해 한 행입니다. 무슨 일이 일어나고 있는지에 대한 더 나은 아이디어를 얻기 위해 도트 제품의 색상 표현을 사용합시다.
다음 이미지에서 행렬 X의 각 샘플은 다른 색상,
본질적으로 녹색 또는 파란색의 다른 음영으로 표현됩니다. 매개변수는 주황색입니다.
yhat은 벡터 또는 다차원 텐서이므로 굵게 표시됩니다.
첫 번째 샘플의 경우 행렬의 첫 번째 행과 매개 변수를 사용하여 내적을 수행합니다.
그런 다음 바이어스 용어를 추가하고 첫 번째 표본에 대한 예측을 얻습니다.
두 번째 샘플의 경우 매개 변수 벡터의 내적을 취한 다음 바이어스 용어를 추가합니다.
그런 다음 두 번째 표본에 대한 예측을 얻습니다. 우리는
내적을 복용하고 바이어스 용어를 추가, 세 번째와 네 번째 샘플에 대한 과정을 반복, 각 샘플은 새로운 예측을 생성
요약하면 X의 열 수와 가중치의 개수도이 경우 동일해야합니다.
바이어스가 하나뿐이지만 녹색의 벡터를 사용하여 각 내적에 바이어스 항을 추가합니다.
그리고
우리가 여러 차원에서 선형 회귀를 수행하기 위해 유용한 클래스 선형을 사용하자 X의 샘플 또는 열로 많은 예측이있다.
우리는 nn 패키지에서 선형을 가져옵니다. 가중치와 바이어스는 무작위로 초기화됩니다.
코드를 실행할 때마다 동일한 결과를 얻으려면 무작위 시드를 사용합니다.
우리는 매개 변수가 다음 섹션에서 얻는 방법을 배우게됩니다.
우리는 생성자 선형을 사용하여 모델 객체를 생성합니다, 매개 변수 “에 - 기능
”각 입력 샘플의 크기 또는 열 수, “아웃 기능”각 출력 샘플의 크기입니다,
그것은 본질적으로 선형 함수를 만듭니다. 선형은 다음과 같은 함수를 생성합니다. 다음 다이어그램을 사용하여 모양을 표현해 봅시다.
“기능”매개 변수는 x의 열 수를 나타내며 모델 가중치의 수는
“Out feature”는이 경우 출력의 크기입니다.
메소드 매개 변수는 우리에게 모델 매개 변수를 제공합니다. 첫 번째는 기울기이고
두 번째는 바이어스이며 메소드가 느리게 평가됨에 따라 출력을 얻으려면 Python 함수 목록을 적용해야합니다.
우리는 선형 가중치와 바이어스를 볼 수 있습니다. 실험실에서는 “state dict”방법을 사용할 수도 있습니다.
입력 텐서를 만들 수 있습니다. 이 두 개의 열이있는 행 벡터 또는 텐서입니다.
선형 객체를 적용하면 결과는 예측에 해당하는 1x1 텐서입니다.
우리는 여러 샘플에 선형 회귀를 적용 할 수 있습니다, 우리는 각 행이 다른 샘플 인 텐서를 만듭니다.
이전과 마찬가지로 다른 샘플을 표현하기 위해 다른 색상을 사용하기 전에
모델 객체를 적용합니다. 3 개의 입력이 있으므로 출력은 3 개의 행입니다.
실제 출력은 다음 색상에 해당하는 세 개의 행과 하나의 열이있는 텐서입니다.
PyTorch에서는 사용자 정의 모듈을 만드는 것이 일반적입니다. 회귀의 맥락에서 선형 객체와 거의 동일하게 작동합니다.
이것은 약간 중복 된 것처럼 보일 수 있지만 나중에 신경망을 구축 할 때 필요합니다.
사용자 정의 모듈은 클래스입니다. 이러한 클래스는 패키지 “Nn.Modules”의 하위 클래스 또는 하위 클래스입니다.
이 경우 사용자 정의 모듈 LR을 호출합니다. 우리는 클래스를 “NN.Modules”의 자식으로 만듭니다.
그 결과, 모든 메소드와 속성을 상속한다.
객체 생성자에서 인수는 입력 및 출력, x 및 y 각각 크기입니다.
우리는 생성자에서 “super”를 호출합니다. 이렇게하면 명시 적으로 초기화하지 않고 객체 내부의 패키지 Nn.Module에서 객체를 만들 수 있습니다.
우리는 이제 인수는
우리가 지금 클래스의 아무 곳이나 선형 유형의 객체를 호출 할 수 있습니다 self.linear 할당 객체 생성자를 통해 설정됩니다, 선형 유형의 객체를 만들 수 있습니다.
우리는 예측을 생성하기 위해 앞으로 함수를 사용합니다. 우리는 명시 적으로 forward 메소드를 호출 할 필요가 없습니다.
파이썬에서 호출 메소드처럼 동작하기 때문에 괄호를 사용하십시오.
우리는 우리의 사용자 정의 모듈이나 클래스를 만듭니다. 이것은 선형 오브젝트처럼 동작하며 “기능 내”매개 변수는 2이고 “out-feature”는 하나입니다.
이 객체는 선형처럼 동작하며 하나의 샘플에 대한 예측을 할 수 있습니다.
또는 여러 표본에 대한 예측을 할 수 있습니다.