Group Study (2022-2023) 83

[Algorithm] 8주차 스터디 - Map과 Set 그리고 Dictionary

1. Map 1) map 이란? 인덱스로 int가 아닌 다른 자료형을 사용할 수 있는 배열이라고 생각하면 쉬움 각 노드가 unique한 key와 value의 쌍으로 이루어진 트리 검색, 삽입, 삭제 등의 속도를 빠르게 하기 위해 균형 이진 트리 중 하나인 레드 블랙 트리로 구현되어 있음 key를 기즌으로 정렬되어 있기 때문에 검색 속도가 빠름 연관 있는 두 값을 함께 묶어서 관리하되, 검색을 빠르게 하고 싶은 경우에 주로 사용 2) c++에서 map 사용하기 include 을 해야 사용 가능 map은 중복 불가한 key와 values 쌍으로 이루어진 노드의 트리이므로 같은 key 값을 같은 노드에 추가하면 원래 노드의 values 값에 덮어씌워짐 ex) (2, 3)인 노드 A가 이미 존재하는 map에 (..

[Machine Learning] 8주차 스터디_RNN(Recurrent Neural Network)

RNN[Recurrent Neural Network] RNN 등장 배경 이전의 Neural network는 하나의 x 입력에 대한 y출력의 간단한 형태였기 때문에 sequence data를 처리하기 어려웠음! RNN이 등장하면서 series data, 즉 이전 데이터가 다음 데이터 연산에 영향을 미치는 Sequence data에 유리해 짐. * x 입력이 있을 때 RNN이라는 연산을 통해서 state를 계산하고 그 state가 다시 입력이 되는 형태. * 각각의 RNN cell에서 y값을 예측해낼 수 있음. RNN 연산 ** RNN에는 'state' 라는 개념이 존재! 새로운 state를 구할 때, 이전의 state 값이 입력으로 사용됨. 1. state를 계산 x 입력 값, 이전의 RNN cell에서 ..

[Spring 심화] 7주차 스터디 - 6장 AOP (2)

6. AOP AOP는 핵심적인 기능에서 부가적인 기능을 분리해서 애스펙트라는 독특한 모듈로 만들어서 설계하고 개발하는 방법이다. 5. 스프링 AOP 1. 자동 프록시 생성 한 가지 해결해야할 과제는 ProxyFactoryBeam 빈 설정정보를 추가하는 부분이다. 문제가 되는 이유는? : 설정을 매번 복사해서 붙이는 작업이 반복되는 것! 빈 후처리기를 이용한 자동 프록시 생성기 빈 후처리기는 스프링 빈 오브젝트로 만들어지고 난 후에, 빈 오브젝트를 다시 가공할 수 있게 해준다. 스프링 컨테이너는 변하지 않는 핵심적인 부분외에는 대부분 확장할 수 있도록 확장 포인트를 제공하는데, 이를 활용해서 위의 문제를 해결해보자 빈 후처리기는 BeanPostProcessor 인터페이스를 구현해서 만들어진다. Defaul..

[Machine Learning] 8주차 스터디 - Segmentation: U-Net

U-Net: Convolutional Networks for Biomedical Image Segmentation 이미지를 인식하는 다양한 방법 Classification Classification + Localization Object Detection: 여러 개의 개체가 있는 곳을 탐지(bbox로 표현) Instance Segmentation: Object Detection과 유사하지만 픽셀별로 어떤 클래스에 해당하는지 구별 Semantic Segmentaion 이미지 내에 있는 각 물체들을 의미 있는 단위로 분할하는 작업으로, 분류의 경우는 단일 이미지를 하나의 클래스로 분류했지만 분할의 경우는 각 픽셀마다 하나의 클래스로 분류한다. 이미지가 주어졌을 때, 한 장의 분할 맵을 생성하는 것이 목표이다..

[Algorithm] 7주차 스터디 - DFS와 BFS

그래프 탐색이란 하나의 정점으로 부터 시작하여 모든 정점을 한번씩 방문하는것이다. 이때 너비를 우선으로 탐색하느냐 깊이를 우선으로 탐색하느냐에 따라 BFS와 DFS로 나눈다. ✅ BFS는 큐를 이용해 구현한다. 시작하는 칸을 큐에 넣고 방문했다는 표시를 남긴다. 큐에서 원소를 꺼내어 그 칸에 대해 상하좌우로 인접한 칸에 대해 (3)을 진행한다. 해당 칸을 이전에 방문했다면 아무것도 하지 않고, 처음으로 방문했다면 방문했다는 표시를 남기고 해당 칸을 큐에 삽입한다. 큐가 빌때까지 (2), (3) 반복한다. ✅ DFS는 위의 BFS와 비슷하지만 스택을 이용해 구현하거나, 혹은 재귀를 이용해 구현하는 방법이 있다. 1️⃣ 스택을 이용해 구현하는 방법 시작하는 칸을 스택에 넣고 방문했다는 표시를 남긴다. 스택에..

Part 3. Convolutional Neural Network(2)

먼저 간략하게 object dectection란 물체의 위치를 탐지하는 bounding box regression과 물체를 분류하는 object classfication 으로 이뤄져있습니다. object detection은 이 두과정을 몇단계로 나누느냐에 따라 1-stage detector, 또는 2-stage detector라고 하는데, 우리가 오늘 다룰 yolo는 1-stage detector 입니다! yolo는 정확한 성능보다 자율주행이나 로봇같이 real-time application을 위한 빠른 속도의 알고리즘에 초점을 두고있습니다. 1-stage detector 는 input image를 입력받으면 feature extractor를 통해 feature 에 대한 정보를 얻고 각 grid 별 연산..

[Spring 심화] 6주차 스터디 - 6장 AOP (1)

📗 토비의 스프링 3.1 Vol.1 스프링의 이해와 원리 📝 6장 AOP AOP는 IoC/DI, 서비스 추상화와 더불어 스프링의 3대 기반기술의 하나 AOP를 바르게 이용하려면 OOP를 대체하려고 하는 것처럼 보이는 AOP라는 이름 뒤에 감춰진, 그 필연적인 등장배경과 스프링이 그것을 도입한 이유, 그 적용을 통해 얻을 수 있는 장점이 무엇인지에 대한 충분한 이해 필요 스프링의 적용된 가장 인기 있는 AOP의 적용 대상 : 선언적 트랜잭션 기능 ✨ 6장에서 다루는 것 : 서비스 추상화를 통해 많은 근본적인 문제를 해결했던 트랜잭션 경계설정 기능을 AOP를 이용해 더욱 세련되고 깔끔한 방식으로 바꾸기, 그 과정에서 스프링이 AOP를 도입해야 했던 이유 6.1 트랜잭션 코드의 분리 지금까지의 UserServ..

[Machine Learning] 7주차 스터디 - PART 3: Convolutional Neural Network (2) / Side Project Team Building

목차 더보기 1. CNN 2. Convolution Layer 3. Pooling Layer 4. Fully Connected Layer 1. CNN DNN의 문제점 일반 DNS는 1차원 형태의 데이터를 flatten 시켜서 한 줄 데이터로써 처리한다. 이 때, 이미지가 입력되는 경우 공간적/지역적 정보를 손실하고 추상화 과정이 없기 때무에 학습 시간과 성능 효율이 떨어진다. CNN이란? 1차원 데이터를 넘어서 이미지나 영상 데이터를 처리하는 모델이다. 이를 위해 Convolution이라는 전처리 과정을 수행한다. CNN은 이미지의 공간적/지역적 정보를 유지한 채 특징들의 채널을 쌓는다. 따라서 이미지 전체가 아닌 부분을 집중하는 것, 한 픽셀과 주변 픽셀들의 연관성을 추출하는게 핵심이다. 2. Conv..

[Machine Learning] 6주차 스터디 - PART 2: Basic Deep Learning (2) / PART 3: Convolutional Neural Network (1)

목차 더보기 1. Sigmoid 함수의 문제점 2. Relu 함수 3. Weight Initialization 4. Dropout 5. Batch Norm 6. ConvNet 1. Sigmoid 함수의 문제점 기존 Neural Network의 학습 과정 기존 neural network는 어떠한 입력을 받고 그에 해당하는 결과를 출력한다. 이때 그 결과와 실제 데이터(ground truth data)의 차이를 로스라고 한다. 로스값을 미분한 것을 Gradient라고 하고 그래프의 관점에서 기울기에 해당한다. Gradient를 Back propagation하면서 네트워크를 학습시킨다. Sigmoid 함수 그래프를 보면 0 주변의 기울기 값이 매우 크다는 것을 알 수 있다. 반면 극단 좌표계 쪽의 기울기 값은..

[6주차] MVC 패턴

MVC(모델-뷰-컨트롤러) Model, View, Controller의 약자이다. 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다. 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC 소프트웨어 디자인 패턴의 세 가지 부분은 다음과 같이 설명할 수 있다. 모델 데이터와 비즈니스 로직을 관리한다. 모델은 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가·제거·수정할 수 있다. 뷰 레이아웃과 화면을 ..