본문 바로가기

분류 전체보기

(602)
함께 살아갈 마음, 그리고 용기 (feat. 우리는 연결되어 있다 - 팀 올리버) # INTRO 였나.. ‘나’라는 개념에 대한 생각을 크게 뒤흔들었던 적이 있었다. 이 애니메이션에서 설명한 ‘자아’란 하나의 단일 개체가 아닌 수 많은 개별 요소들의 합이었다. 초기 자아는 비어있는(공,空) 원이고 이 원 안에 개인적인 경험, DNA 특성, 주어진 환경 등이 하나씩 자리를 차지하면서 자아를 형성해간다. (물론 애니메이션은 사이보그에 관련된 거라 프로그래밍 같은 애매한(?) 것들도 들어가긴 했지만..) 이 개념을 접한 후 나는 스스로를 돌아볼 때 지금껏 겪어왔던 경험들과 천부적으로 인간에게 주어진 무언가의 합이라고 생각하게 되었다. 미래를 생각할 때에도 10년 후 나의 안에 무엇을 채우고 싶은지를 많이 물어보게 되었다. #0. 우리는 연결되어 있다 책 [우리는 연결되어 있다] 는 이러한 ..
Unsupervised Networks로 데이터 카테고리 나누기 (feat. SOM) 이 글은 SELF-ORGANIZING MAPS TUTORIAL을 읽고 작성한 글입니다. 대량의 데이터들 속에서 이 데이터들이 어떤 특정한 경향이 있음을 알아보려면 어떻게 해야 할까? 군대에서 병사들이 헤쳐모이듯이 데이터들이 알아서 헤쳐모이도록 하려면 어떻게 해야 할까? 이 물음이 있다면 Self-organizing map(SOM) 기법을 사용해보는게 좋다. SOM은 unsupervised newural networks의 한 유형이고 사용자로 하여금 대량의 데이터셋에서 범주(Category)를 발견할 수 있도록 도와주는 기술이다. SOM은 grid의 형태로 뉴런을 표시한다. 격자무늬의 한칸 한칸이 뉴런인데 이 격자무늬가 반드시 사각형이진 않다. SOM은 반복작업(Iteration)을 통해 뉴런들이 어떠한 ..
개선됨을 증명하고자 한다면 AB 테스트를 써보자 이 글은 LAYMAN'S GUIDE TO A/B TESTING을 참고하여 작성되었습니다. 어떤 기술이나 방식이 기존보다 더 효율적이라는 사실을 어떻게 증명할 수 있을까? 비만을 줄이는 연구에 열중하고 있는 연구자가 있다면 다음해 투자를 받기 위해 자신의 연구가 가치가 있음을 입증해야 할 것이다. 이 경우 좋은 도구로서 A/B Testing이 있다. A/B Testing은 두 개의 집단군을 나누어 한 그룹은 실험하고자 하는 행위를 하고(실험 그룹, experimental) 다른 한 그룹(통제 그룹, control)은 아무것도 하지 않는다. 이후 이 두 그룹간의 차이를 보고 실험 그룹이 기존 그룹에 대비하여 어떻게 변화하였는지 측정한다. #0. A/B Testing의 전체 과정 A/B Testing의 전체 ..
원하는 미래를 사는 방법 (feat. [퓨처리스트] - 브라이언 데이비드 존슨) 미래는 정해져 있는가? 아니면 미래는 우리가 정하는 것인가? 책 [퓨처리스트]의 저자인 브라이언 데이비드 존슨은 미래는 우리 한명 한명이 만들어가는 것이라 말한다. 우리가 어떠한 생각과 판단으로 어떠한 행동을 하느냐에 따라 미래가 결정되기 때문에 미래는 본질적으로 예측 불가하다. 미래가 정해져 있지 않음은 우리에게 희망과 불안을 동시에 안겨다 준다. 아무리 어두운 상황에 있더라도 앞으로 더 밝은 미래를 살기로 선택할 수 있고 모든 것을 다 가진 행복에 취해 앞으로 다가올 위협에 소홀할 수도 있기 때문이다. 우리 모두는 살고 싶은 미래가 있다. 당장 떠오르지 않다면 적어도 피하고 싶은 미래는 있을 것이다. 내일 당장 대출금을 못 갚아 길거리에 나앉는 것을 원하는 사람은 그리 많지 않을 것이다. # 그렇다면..
MyBatis 변수명을 잘 썼는데도 There is no getter for property named 오류가 뜬다면.. MyBatis의 Mapper.xml 파일을 작성할 때 태그에서 keyProperty 속성으로 여러개의 key값을 지정하는 경우가 있다. 예를들어 ... 처럼 말이다. 이때 변수명을 잘 입력했음에도 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named... 오류가 뜨는 경우가 있다. 이 경우에는 ..
MyBatis SelectKey returned no data 에러 MyBatis를 이용한 프로젝트에서 객체 하나를 Maria DB에 insert하고 그 키값을 얻어오고 싶었다. 키값은 AUTO_INCREMENT 속성 대신 DB에서 직접 생성한 UUID 값을 사용하기로 하였는데, 태그에 추가로 태그를 넣어주어야 했다. 그래서 아래와 같이 작성했는데 SELECT UUID() as MY_OBJECT_ID FROM MY_CUSTOM_TABLE INSERT INTO MY_CUSTOM_TABLE ( MY_OBJECT_ID ) VALUES ( #{myObjectId} ); But... 어쩐 일인지 계속 "SelectKey returned no data" 에러만 계속 발생하였다. 테스트해보니 테이블에 데이터가 있을 경우 이 에러는 발생하지 않고 테이블이 비어있는 경우에만 이 에러가 ..
IntelliJ 기참조된 maven repository 내용 업데이트 우리 회사는 gRPC로 통신 프로토콜을 정의하여 협업을 진행한다. gRPC 명세가 변경되면 새로 빌드된 SNAPSHOT이 소스 저장소인 NEXUS에 올라간다. 개발자가 각자의 프로젝트에서 개발을 할 때에는 NEXUS에 올라간 최신 SNAPSHOT 버전을 maven으로 import하여 사용한다. 오늘 아침 gRPC 명세가 변경되어 있었기 때문에 나의 프로젝트로 새로운 SNAPSHOT을 땡겨와야했다. 내가 쓰는 IntelliJ(2021.2.3 Community Edition)에서 기참조된 maven repository 내용을 업데이트하려면 아래와 같이 진행하면 된다. 1) pom.xml 우클릭 2) maven탭에 마우스 hover 3) 오른쪽에 메뉴가 하나 새로 뜨는데 여기서 Reload Project 클릭..
CNN(Convolutional Neural Networks) 이 글은 CONVOLUTIONAL NEURAL NETWORKS(CNN) INTRODUCTION을 읽고 요약한 글입니다. 이전에 ANN(Artifical Neural Networks)에 관한 글을 읽었는데, CNN은 ANN의 한계를 극복하기 위해 만들어졌다. 그 한계가 무엇인고 하니 ANN은 모든 뉴런들이 서로 연결되어 있는 구조여서 학습할 데이터가 크면 클수록 복잡성이 급격하게 증가하는 것이었다. 복잡성이 증가하면 그만큼 학습(Training)에 소요되는 시간도 길어졌고 컴퓨터 성능을 최대한 끌어올려 학습하는 경우 이 학습 시간이 연구를 하기엔 너무 오래 걸리는 것이었다. 이에 대한 대안으로 나온 모델이 Convolutional Neural Netowrks, CNN이다. CNN은 모든 뉴런이 연결되어 있..