Group Study (2021-2022) 83

[머신러닝 입문 스터디] 11주차 - 텍스트를 위한 인공 신경망

순차 데이터와 순환 신경망 순환 데이터는 텍스트나 시계열 데이터와 같이 순서에 의미가 있는 데이터 대표적인 순차 데이터로는 글, 대화, 일자별 날씨, 일자별 판매 실적 등 순환 신경망은 순차 데이터에 잘 맞은 인공 신경망의 한 종류 순환 신경망에서 종종 순환층을 셀이라고 부르며 하나의 셀은 여러 개의 뉴런으로 구성됨 순환 신경망에서는 셀의 출력을 은닉 상태라고 부르며 은닉 상태는 다음 층으로 전달될 뿐만 아니라 셀이 다음 타입스텝의 데이터를 처리할 때 재사용 순환신경망으로 IMDB 리뷰 분류하기 말뭉치는 자연어 처리에서 사용하는 텍스트 데이터의 모음으로 훈련 데이터셋을 뜻함 토큰은 텍스트에서 공백으로 구분되는 문자열 원-핫 인코딩은 어떤 클래스에 해당하는 원소만 1이고 나머지는 모두 0인 벡터 정수로 변..

[머신러닝 입문 스터디] 10주차 - 이미지를 위한 인공 신경망

합성곱 신경망의 구성요소 합성곱: 밀집층과 비슷하게 입력과 가중치를 곱하고 절편을 더하는 선형 계산. 입력을 일부만 사용한다. 필터: 합성곱 층의 필터는 밀집층의 뉴런에 해당한다. 필터의 가중치와 절편을 커널이라고 부르며, 자주 사용되는 커널의 크기는 (3,3) 또는 (5,5)이며, 커널의 깊이는 입력의 깊이와 같다. 특성 맵: 합성곱 층이나 풀링 층의 출력 배열. 필터 하나가 하나의 특성 맵을 만든다. 패딩: 합성곱 층의 입력 주위에 0으로 채워진 픽셀. 밸리드 패딩: 픽셀을 사용하지 않음 세임 패딩: 합성곱 층의 출력 크기를 입력과 동일하게 만들기 위해 입력에 패딩을 추가 스트라이드: 합성곱 층에서 필터가 입력 위를 이동하는 크기. 일반적으로 1픽셀 사용 풀링: 가중치가 없고 특성 맵의 가로세로 크기..

7주차 - 게임 기획 아이디어 공유

현애님 기획 주제: 공굴리기 게임 3인칭 공굴리기 게임 공이 스스로 앞으로 굴러가며, 왼쪽/오른쪽 화살표 키로 조종할 수 있음 플레이타임 약 5-10분 정도의 미니게임 현서님 기획 2D 횡스크롤 게임 How to make a 2D Game in Unreal Engine 5 | Community tutorial (epicgames.com) How to make a 2D Game in Unreal Engine 5 | Community tutorial Since the 2D Side Scroller Template has been removed with Unreal Engine 5, it has become a lot harder to get started making 2D games in Unreal Eng..

[클린코드 북리뷰 스터디] 8주차 - 냄새와 휴리스틱

목표 클린 코드 책에서 제시한 클린 코드 규칙을 정리해보자. 목차 주석 환경 함수 일반 자바 이름 테스트 읽어 보면 좋은 책들 💡 프로그래밍은 과학보다 공예에 가깝다는 사실이다. 깨끗한 코드를 짜려면 먼저 지저분한 코드를 짠 뒤에 정리해야 한다. 💡 실용적인 관점에서 타협한다. 여러가지 규칙에 극단적으로 심취해 클래스와 메서드를 무수하게 만들지 말라. 결국 좋은 코드를 만드는 이유는 생산성을 올리기 위한 것이다. 주석 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다. 안 좋은 코드를 주석으로 부연설명하려 하지 말고 코드를 개선해라. 일반적으로 작성자. 최종 수정일, SPR 번호 같은 메타 정보만 주석으로 넣는다. 쓸모 없어질 주석은 달지 않는 편이 좋다. 주석으로 처리된 코드는 즉각 지워라. 환경..

[클린코드 북리뷰 스터디] 7주차 - 점진적인 개선, Junit 들여다보기, SerialDate 리팩터링

Chapter14. 점진적인 개선 : 코드를 점진적으로 개선하기 01 책의 예제 코드 초안 모든 로직이 하나의 클래스에 들어가있다. 처음부터 지저분한 코드를 짜려는 생각은 없었고, 코드를 어느정도 손 봤지만 새로운 인수 유형이 들어오면서 재앙이 시작됐다. 이제는 개선해야 할 때 라는걸 깨닫고, 변경 전후 시스템이 동일하게 돌아간다는 사실을 확인하기 위해 테스트들을 작성해뒀다. 자잘하게 점진적으로 개선해나갔다 코드 완성본 Args 클래스에서 코드 중복을 최소화하고, ArgsException 클래스를 분리했다. ArgumentMarshaler 클래스를 통해 여러 인수에 대한 추후 확장성을 만들어냈다. 코드만 분리해도 설계가 좋아진다. 관심사를 분리하면 코드를 이해하고 보수하기 훨씬 더 쉬워진다. => 자신이..

[머신러닝 입문 스터디] 9주차 - 딥러닝을 시작합니다

인공 신경망 인공 신경망은 기존의 머신러닝 알고리즘으로 다루기 어려웠던 이미지, 음성, 텍스트 분야에서 뛰어난 성능을 발휘하면서 크게 주목받고 있으며, 인공 신경망 알고리즘을 딥러닝이라고도 부름 텐서플로는 구글이 만든 딥러닝 라이브러리이며 CPU와 GPU를 사용해 인공 신경망 모델을 효율적으로 훈련하여 모델 구축과 서비스에 필요한 다양한 도구를 제공 텐서플로 2.0부터는 신경망 모델을 빠르게 구성할 수 있는 케라스를 핵심 API로 채택 밀집층은 가장 간단한 인공 신경망의 층이며 밀집층에서는 뉴런들이 모두 연결되어 있기 때문에 완전 연결 층이라고도 부름 원-핫 인코딩은 다중 분류에서 출력층에서 만든 확률과 크로스 엔트로피 손실을 계산하기 위해 정숫값을 배열에서 해당 정수 위치의 원소만 1이고 나머지는 모두..

[코딩테스트 스터디] 6주차 - 다이나믹 프로그래밍

다이나믹 프로그래밍 한 번 해결된 부분 문제의 정답을 메모리에 기록하여, 한 번 계산된 답은 다시 계산하지 않도록 하는 알고리즘 점화식(인접한 항들 사이의 관계식) 이용 메모리 공간을 약간 더 사용하여 연산 속도 증가 사용 조건 큰 문제를 작은 문제로 나눌 수 있을 때 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일할 때 코드 작성법 탑다운(Top-Down) 재귀 함수 이용 큰 문제를 해결하기 위해 작은 문제 호출 보텀업(Bottom-Up) 단순 반복문 이용 작은 문제 먼저 해결, 해결된 작은 문제를 모아 큰 문제 해결 권장하는 방법 예제 - 피보나치 수열 한 번 계산한 i번째 피보나치 수를 모두 1차원 리스트에 저장 풀이 1: 재귀 함수로 구현 시간 복잡도 O(2^N) ⇒ n이 커지면 수..

[머신러닝 입문 스터디] 8주차 - 비지도 학습

군집 알고리즘 비지도 학습: 머신러닝의 한 종류로 훈련 데이터에 타깃이 없기 때문에 외부의 도움 없이 스스로 유용한 무언가를 학습한다. 대표적인 비지도 학습 작업으로는 군집, 차원 축소 등이 있다. 히스토그램: 구간별로 값이 발생한 빈도를 그래프로 표시한 것이다. 보통 x축이 값의 구간(계급)이고 y축은 발생 빈도(도수)이다. 군집: 비슷한 샘플끼리 하나의 그룹으로 모으는 대표적인 비지도 학습 작업이다. 군집 알고리즘으로 모은 샘플 그룹을 클러스터라고 한다. k-평균 k-평균: 처음에 랜덤하게 클러스터 중심을 정하고, 점차 가장 가까운 샘플의 중심으로 클러스터의 중심을 이동하고 다시 클러스터를 만드는 식으로 반복해서 최적의 클러스터를 구성하는 알고리즘 클러스터 중심: k-평균 알고리즘이 만든 클러스터에 ..

[코딩테스트 스터디] 5주차 - 이분탐색

이분탐색: 반으로 쪼개면서 탐색하기 이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘이다. 이진 탐색은 위치를 나타내는 변수 3개를 사용하는데 탐색하고자 하는 범위의 시작점, 끝점 그리고 중간점이다. - 평균 시간 복잡도: O(logN) * 재귀 함수로 구현한 이진 탐색 소스코드 # 이진 탐색 소스코드 구현 (재귀 함수) def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 2 # 찾은 경우 중간점 인덱스 반환 if array[mid] == target: return mid # 중간점의 값보다 찾고자 하는 값이 작은 경우 왼쪽 확인 elif array[mid]..

[클린코드 북리뷰 스터디] 6주차 - 창발성과 동시성

⛳️ 9. 창발성 목차 모튼 테스트를 실행한다 중복을 없앤다 프로그래머의 의도를 표현한다 클래스와 메서드 수를 최소로 줄인다. 창발적 설계란? 창발성 (Emergence) 하위 계층에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출연하는 현상 작은 요소들의 상호작용의 반복이 전체 구조에 영향을 미친다 ex. 개미의 집짓기 창발적 설계 단순한 4가지 단계를 반복하다보면 전체적으로 깨끗한 코드가 만들어진다. 1. 모든 테스트를 실행하라 설계를 의도한 대로 돌아가는 시스템을 내놓아야 한다 테스트를 철저히 거쳐 모든 테스트 케이스를 항상 통과하는 시스템 == 테스트가 가능한 시스템 테스트가 불가능한 시스템 👉 검증 불가능 👉 절대 출시 ❌ 설계 품질이 더불어 높아짐 테스트가 가능한 시스템..