1.
최소제곱법은 최적의 기울기를 한 번에 찾는 방법이고
특성이 2개일 때 사용
2.
특성이 2개 이상이 되면 최소 제곱법이 안되는 것은
아니어도 시간이 기하급수적으로 늘어나므로
해결방안으로 반복법을 사용한다.
그래서 경사하강법을 사용한다.
수학에서 어림하듯이 적당한 값에서 출발해서
조금씩 값을 갱신한다. 일단 a, b를 랜덤 임의의 값으로 둔다.
경사하강법은 손실함수의 랜덤한 위치에서 기울기를
계산하고 기울기가 0이 되는 방향으로 학습률만큼 점진적으로
이용하여 최적의 알파값을 찾는 반복수행방법
반복 수행한다는 의미는 다양한 랜덤 위치에서 경사하강법이
실시된다는 의미, 이 때 평균제곱오차로 손실 계산하는 것
그러다 손실이 0이되는 순간, 앞의 a, b와 방금 구한 새로운
a, b의 차가 0이 될 때! 끝!
그래서 a,b값을 구해나간다. 기울기를 세밀하게 조절해 나간다.
컬럼수(특성 수)가 많아질 수록 이게 효율적
3.
교수님 : 학습 순서가 이랬어야 하지 않나하는 생각이 들었다.
EBS의 "수학으로 배우는 AI" 교재 순서가 맞는 것 같다.
오차 - 평균 제곱 오차 - 최소제곱법과 경사하강법
-----------------------------
[원-핫 인코딩]
1. 선택해야 하는 선택지의 개수만큼 차원을 가지면서
각 선택지의 인덱스에 해당하는 원소에는 1 나머지는 0
2. 강아지 고양이 냉장고이면 3차원
0번 인덱스의 강아지 = [1, 0, 0]
1번 인덱스의 고양이 = [0, ,1, 0]
2번 인덱스의 냉장고 = [0, 0, 1]
결국 희소행렬을 만드려고 One-hot encoding을 하는 것이다.
원핫인코딩으로 표현된 벡터는 원핫벡터라고 부른다.
3. 그런데!!!!!
텐서플로우에서 알아서 해준다고 한다.
Sparse_categorical_crossentropy
희소
-------------------------------
[드롭 아웃 dropout]
1. 목적 : 과대적합 막기
2. 학습 시에만 쓰고 예측 시에는 잘 안 씀.
3. 학습 시에 매번 랜덤 선택해서 신경망 일부 출력을 0으로 만든다.
(그거 안 쓴다는 것)
4. 이걸 여러번 하다보면 서로 다른 신경망들을 앙상블하여
사용하는 것 같은 효과를 내어 과적합을 방지한다.
5. 이것도!!!!!!!
사이킷 런에서 알아서 해준다고 한다.
--------------------------------
[Flatten()]
1. 이미지를 reshape 등으로 행으로 펼쳐주기도 할 수 있지만
Flatten()하면 쏵 정리 된다.
--------------------------------
[sklearn.preprocessing.LabelEncoder]
1. 문자열을 0부터 시작하는 정수형으로 변환하기
(이건 진짜 쓸모가 많겠다.)
2. 엑셀로도 할 수 있지만 엑셀이 감당못하는 대용량 데이터도
얘로하면 편하다.
https://colab.research.google.com/drive/1kDJg2RHkxNQgBBFdQ0NrEaB5pol4hvfp?usp=sharing
---------------------------------
[모델 설계 연습 한 번 더]
1. 순서를 한 번 더 정리해보면
1) 모델 생성하기 - Sequential()
2) 입력층, 은닉층, 출력층 만들기 - Dense()
3) 모델 컴파일 하기 - Compile()
4) 모델 실행하기 - fit()
5) 모델 평가하기 - evaluate()
https://colab.research.google.com/drive/1kDJg2RHkxNQgBBFdQ0NrEaB5pol4hvfp?usp=sharing
-----------------------------------
[합성곱]
입력과 가중치를 곱하고 절편을 더하는 선형계산을 이용하여
특성맵을 추출한다. 특성맵이 중요하다.
(각 합성곱은 입력전체가 아니라 일부만 사용하여 선형계산을 수행한다.)
예를 들어
모든그림을 반 나눠서 위에 동그라미 있나 없나 체크
이런 개념으로 표를 만든다.
즉, 일부분 부분의 특성표를 만드나 봄
문제 분해같은 것 전체해결을 위해 부분부분 나눠서
그게 바로
(필터)
--가로로만 표시된 값 읽는 필터---통하고 나면---->특징 맵 나옴
--세로-----> 세로 특징 맵 나옴
--세로-----> 세로 특징 맵 나옴
-----------------------------------------
[합성곱 중 필터 이해]
1. 필터부터 만들자. 필터로 특징 맵부터 만들어야 한다.
-필터는 3차원 형태로 된 가중치의 모음
-필터 하나는 앞의 레이어 결과인 '특징맵'전체를 본다.
-필터 개수만큼 특징맵을 만든다.
-콘볼루션으로 필터와 특성맵 만들기
H=tf.keras.layers.Conv2D(3,kernel_size=5, activation=)(X)
# 바로 위 데이터이미지들 X가 여기 들어간다.
# 필터개수 세개니까 특징맵소 3개 나온다.
# 커널 사이즈는 5만 쓰면 5x5크기, 가로세로다를 때는 정수의 튜플로지정
H=Conv2D(6,kernel_size=6, activation=)(H)
# 바로 위의 H의 특성맵이 여기 들어간다.
.....
Y=tf.keras.layers.Dense(10,activation='softmax')
#출력이 1개이면 0과 1의 시그모이드겠지만 지금은 10개라 소프트맥스
2. 필터를 지나칠 때보다 이미지 크기가 작아진다.
필터의 이해 부분 (합성곱의 이해 동영상 5월16일꺼는 다음에 한번 다시보든지)
--------------------------------------------
[합성곱 중 폴링의 이해]
param은 계산수
param이 어마어마해지면 안되니까 폴링을 한다.
가장 수치가 큰 부분에 특징이 많다.
MaxPooling은 예를 들어 2x2중에 1개 제일 큰 값만
남기는 식으로 그림 크기를 줄여나감
averagePooling도 있다고함
디폴트가 2x2이고 그러면 그림 크기가 반이되는 것임
콘볼루션 뒤에 계속 풀링을 붙인다.
(콘볼루션에 padding='size'를 추가하면 이미지 차감 안함
-(5-1) 이걸 안한단다. 맥스풀링으로만 이미지 축소하겠다는 의도일 때)
[실습한 링크]
https://colab.research.google.com/drive/1kDJg2RHkxNQgBBFdQ0NrEaB5pol4hvfp?usp=sharing
댓글
댓글 쓰기