김묭의 자기개발
TIL.29 - 머신러닝 & 알고리즘 본문
<머신 러닝 강의>
1.Convolutional Neural Networks (합성곱 신경망)
- 합성곱(Convolution)은 예전부터 컴퓨터 비전(Computer Vision, CV) 분야에서 많이 쓰이는 이미지 처리 방식으로 계산하는 방식은 아래와 같습니다. 입력데이터와 필터의 각각의 요소를 서로 곱한 후 다 더하면 출력값이 됩니다.출처: https://ce-notepad.tistory.com/14
- 딥러닝 연구원들은 이 합성곱을 어떻게 딥러닝에 활용할 수 있을까 고민하다가, 1998년에 Yann LeCun 교수님이 엄청난 논문을 발표하게 됩니다.르쿤 교수님은 합성곱을 이용한 이 신경망 디자인을 합성곱 신경망(CNN)이라고 명칭하였고 이미지 처리에서 엄청난 성능을 보이는 것을 증명했는데요. CNN의 발견 이후 딥러닝은 전성기를 이루었다고 볼 수 있습니다. 이후 CNN은 얼굴 인식, 사물 인식 등에 널리 사용되며 현재도 이미지 처리에서 가장 보편적으로 사용되는 네트워크 구조입니다.
- 합성곱(Convolution)은 예전부터 컴퓨터 비전(Computer Vision, CV) 분야에서 많이 쓰이는 이미지 처리 방식으로 계산하는 방식은 아래와 같습니다. 입력데이터와 필터의 각각의 요소를 서로 곱한 후 다 더하면 출력값이 됩니다.출처: https://ce-notepad.tistory.com/14
- 딥러닝 연구원들은 이 합성곱을 어떻게 딥러닝에 활용할 수 있을까 고민하다가, 1998년에 Yann LeCun 교수님이 엄청난 논문을 발표하게 됩니다.르쿤 교수님은 합성곱을 이용한 이 신경망 디자인을 합성곱 신경망(CNN)이라고 명칭하였고 이미지 처리에서 엄청난 성능을 보이는 것을 증명했는데요. CNN의 발견 이후 딥러닝은 전성기를 이루었다고 볼 수 있습니다. 이후 CNN은 얼굴 인식, 사물 인식 등에 널리 사용되며 현재도 이미지 처리에서 가장 보편적으로 사용되는 네트워크 구조입니다.
합성곱 연산
합성곱 계층에서의 합성곱 연산을 처리한다. 합성곱 연산은 이미지 처리에서 말하는 필터 연산에 해당된다. 아래 예를 살펴보자. 위의 그림과 같이 합성곱 연산은 입력 데이터에 필터를 적용
ce-notepad.tistory.com
2. CNN의 구성
- 합성곱 신경망은 합성곱 계층(Convolution layer)과 완전연결 계층(Dense layer)을 함께 사용합니다.출처: https://teknoloji.org/cnn-convolutional-neural-networks-nedir/
- 합성곱 계층 + 활성화 함수 + 풀링을 반복하며 점점 작아지지만 핵심적인 특성들을 뽑아 내는데요. 여기서 풀링 계층(Pooling layer)은 특성 맵의 중요부분을 추출하여 저장하는 역할을 합니다.
- 아래의 이미지는 Max pooling의 예시입니다. 2x2 크기의 풀 사이즈(Pool size)로 스트라이드 2의 Max pooling 계층을 통과할 경우 2x2 크기의 특성 맵에서 가장 큰 값들을 추출합니다.
아래는 Average pooling의 예시입니다. Max pooling에서는 2x2 크기의 특성 맵에서 최대 값을 추출했다면 Average pooling은 2x2 크기의 특성 맵에서 평균 값을 추출하는 방식입니다.
<알고리즘>
1. 크레인 인형뽑기(카카오)
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(board, moves):
answer = 0
buket = []
for j in moves:
for idx, v in enumerate(board):
if v[j-1] != 0:
buket.append(v[j-1])
board[idx][j-1] = 0
if len(buket) > 1:
if buket[-1] == buket[-2]:
answer += 2
buket.pop()
buket.pop()
break
return answer
2. 영어 끝말잇기
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12981
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(n, words):
answer = []
word_li = []
total = 0
for idx, v in enumerate(words):
# 턴추가
if idx % n == 0:
total += 1
# 중복
if v in word_li:
answer.append([(idx%n)+1, total])
return [(idx%n)+1, total]
# 잘못된 끝말잇기
if word_li:
if word_li[-1][-1] != v[0]:
answer.append([(idx%n)+1, total])
return [(idx%n)+1, total]
word_li.append(v)
return [0,0]
'내일배움캠프 > 기타' 카테고리의 다른 글
1. Django 50문 50답 (0) | 2023.07.19 |
---|---|
CS 정리 - 1 (0) | 2023.07.12 |
TIL.28 - 머신러닝 강의 (0) | 2023.05.17 |
Project.5- 회고록 (0) | 2023.05.15 |
Project.5 - 마지막 날 (0) | 2023.05.15 |